FFprobe monitor#
The ffprobe monitor watches for stuck ffprobe processes spawned by Sonarr or Radarr and nudges them back to life. This prevents long-running media scans from hanging indefinitely.
When it runs#
The monitor activates only when at least one Sonarr or Radarr instance is enabled. If neither service is running, the worker stays idle.
How it works#
- Collects running Sonarr/Radarr process IDs.
- Finds descendant
ffprobeprocesses. - Detects processes stuck in an uninterruptible sleep state (
D) for longer than a configured age. - Re-runs
ffprobeon the same input file to release the stuck probe.
Configuration in dumb_config.json#
"dumb": {
"ffprobe_monitor": {
"enabled": true,
"interval_sec": 10,
"min_process_age_sec": 30,
"min_poke_interval_sec": 60,
"poke_timeout_sec": 30,
"max_pokes_per_cycle": 3,
"cache_ttl_sec": 3600,
"ffprobe_path": "ffprobe"
}
}
Settings reference#
| Setting | Description |
|---|---|
enabled |
Turns the monitor on or off. |
interval_sec |
Poll interval between checks. |
min_process_age_sec |
Minimum age for an ffprobe process before it is considered stuck. |
min_poke_interval_sec |
Minimum time between pokes for the same file path. |
poke_timeout_sec |
Timeout for the probe used to nudge the stuck process. |
max_pokes_per_cycle |
Maximum number of ffprobe pokes per polling cycle. |
cache_ttl_sec |
How long to cache recently poked file paths. |
ffprobe_path |
Path or command for ffprobe. |
Operational notes#
Scope
The monitor only targets ffprobe processes spawned under Sonarr/Radarr. It does not touch other ffprobe instances on the host.
Custom ffprobe binary
If your media stack uses a bundled ffprobe, set ffprobe_path to the full binary path.
Troubleshooting#
- If ffprobe checks never trigger, verify Sonarr/Radarr instances are enabled and visible to the DUMB process handler.
- If the monitor logs repeated timeouts, lower
max_pokes_per_cycleor increasepoke_timeout_sec.