Job Lifecycle
Every video goes through a multi-stage lifecycle from detection to completion. BitBonsai manages this automatically with zero user intervention required.What is a job? A job is a single video file being encoded. Each video in your library becomes one job. See glossary for more details.
Lifecycle Flow Diagram
Most jobs go: DETECTED → HEALTH_CHECK → NEEDS_DECISION → QUEUED → ENCODING → VERIFYING → COMPLETED. The whole process is automatic after you click “Queue Selected.”
Job Status Details
DETECTED
- What it means: File found during library scan
- User action: None (automatic)
- Duration: Milliseconds
- Next step: Health check runs automatically
HEALTH_CHECK
- What it means: BitBonsai is validating file integrity with FFmpeg
- Checks performed:
- File exists and is readable
- Container format is valid (MP4, MKV, AVI, etc.)
- Video/audio streams are decodable
- Duration and metadata are accessible
- No critical corruption in file structure
- User action: None (automatic)
- Duration: 1-5 seconds per file
- Next step:
- Healthy files → NEEDS_DECISION
- Corrupted files → FAILED (not queued)
NEEDS_DECISION
- What it means: File is healthy and ready to encode
- User action: Select codec (HEVC/AV1) and click “Queue Selected”
- Where to find: Libraries → Queue tab
- Filters available:
- Codec (find H.264 videos to upgrade)
- Resolution (1080p, 4K, etc.)
- Bitrate (target high-bitrate files)
- File size (prioritize large files)
QUEUED
- What it means: Job is waiting for an available worker node
- User action: None (automatic)
- Duration: Seconds to minutes (depends on queue depth)
- Priority: First-in, first-out (FIFO)
- Next step: Starts encoding when worker is free
Queue depth is visible in the Encoding tab header: “3 queued, 2 encoding”. Add more worker nodes to process queued jobs faster.
TRANSFERRING
- What it means: (Multi-node only) File is being copied to worker node
- User action: None (automatic)
- Duration: Depends on network speed and file size
- Why this happens: Some multi-node setups don’t use shared storage (NFS), so files must be transferred before encoding
- Next step: Encoding starts after transfer completes
ENCODING
- What it means: FFmpeg is actively encoding the video
- User action: Monitor progress, or pause/cancel if needed
- Duration: Minutes to hours (depends on codec, resolution, and hardware acceleration)
- What you see:
- Progress percentage (0-100%)
- Estimated time remaining
- Encoding speed (FPS)
- Output file size estimate
- Current vs. target bitrate
Progress Bar Breakdown
Encoding Speed (FPS)
PAUSED
- What it means: User manually paused encoding
- User action: Click Resume to continue
- Duration: Indefinite (until user resumes)
- Progress saved: Yes, resumes from exact frame
- Use case: Free up CPU/GPU for other tasks temporarily
VERIFYING
- What it means: Encoded file is being validated for corruption
- Checks performed:
- User action: None (automatic)
- Duration: 1-3 seconds
- Next step:
- Healthy output → COMPLETED
- Corrupted output → FAILED (re-queued for retry)
COMPLETED
- What it means: Encoding succeeded and file replaced
- User action: None (automatic)
- What happened:
- File location: Same path as original (in-place replacement)
- Backup location:
[library-path]/.bitbonsai/originals/[relative-path]
File Size Comparison
Typical savings after encoding:FAILED
- What it means: Encoding encountered an error
- User action:
- Check error message in job details
- Click Retry to manually retry
- Auto-retries 3x before stopping
- Common causes:
- Corrupted source file (skip it)
- Insufficient disk space (free up space)
- FFmpeg crash (bug in codec)
- Hardware encoder failure (try CPU fallback)
- Auto-retry behavior:
- 1st retry: Immediate
- 2nd retry: 5 minutes later
- 3rd retry: 15 minutes later
- After 3 failures: Stops, requires manual retry
Error Categories
View detailed error message
View detailed error message
- Go to Encoding tab
- Filter by Failed status
- Click job row to expand details
- Error message shows FFmpeg output with:
- Error category
- Root cause analysis
- Suggested fix
- Full FFmpeg stderr log
CANCELLED
- What it means: User manually cancelled encoding
- User action: Job is removed from queue
- Progress lost: Yes, cannot resume cancelled jobs
- Use case: Queued wrong file or changed mind about codec
Job Details Panel
Click any job in the Encoding tab to view detailed information:Pro tip: Sort jobs by “Time Remaining” to see which jobs finish soonest. Large 4K movies may take hours, while 1080p TV episodes finish in 5-10 minutes.
Retry Failed Jobs
Manual Retry
- Go to Encoding tab
- Filter by Failed status
- Select jobs to retry (checkbox or Select All)
- Click Retry Selected button
- Jobs move back to QUEUED and restart
Auto-Retry Behavior
BitBonsai automatically retries failed jobs 3 times with exponential backoff:Bulk Retry
Retry all failed jobs at once:Auto-Healing Features
BitBonsai includes multiple self-healing mechanisms to recover from errors automatically:1. Orphaned Job Recovery (On Startup)
Problem: Container restarted mid-encoding → jobs stuck in ENCODING status Solution: On backend startup, BitBonsai finds all jobs with status ENCODING and resets them to QUEUED When it runs: Every backend container restart User action: None (automatic) Logs:2. Temp File Detection (NFS Mount Recovery)
Problem: NFS mount not ready → job marks file as “not found” → FAILED Solution: Before marking FAILED, retry 10 times with 2-second delays (20 seconds total) When it runs: During encoding temp file checks User action: None (automatic) Logs:This prevents false FAILED status during NFS mount hiccups or slow network storage.
3. Health Check Retry (Before Marking CORRUPTED)
Problem: Network hiccup during health check → false CORRUPTED status Solution: Retry health check 5 times with 2-second delays (10 seconds total) When it runs: During HEALTH_CHECK and VERIFYING stages User action: None (automatic) Why this matters: Prevents wasting time re-checking healthy files4. CORRUPTED Auto-Re-Validation (Hourly)
Problem: Files marked CORRUPTED during NFS hiccups are often actually healthy Solution: Every hour, BitBonsai finds all CORRUPTED jobs and resets them to QUEUED for re-validation When it runs: Hourly (cron job in backend) User action: None (automatic) Logs:5. Stuck Job Watchdog (Detects Frozen Encodes)
Problem: FFmpeg crashes mid-encode but process doesn’t exit → job stuck at same progress for hours Solution: If progress hasn’t changed in 15 minutes, job is marked FAILED and auto-retried When it runs: Background watchdog every 5 minutes User action: None (automatic) Logs:Job History and Filtering
Filter Jobs by Status
The Encoding tab has a status filter dropdown:Search Jobs
Use the search bar to find jobs by filename:Sort Jobs
Click column headers to sort:Job History Retention
Completed jobs older than retention period are auto-deleted from database but files remain in library.
Troubleshooting
Job stuck in QUEUED
Symptom: Jobs stay in QUEUED for minutes/hours Possible causes:- All worker nodes offline (check Nodes page)
- All nodes at max concurrency (add more nodes)
- Database connection lost (check backend logs)
- Go to Nodes page → check node status
- If offline: Restart worker node containers
- If online but idle: Check backend logs for errors
- If all busy: Wait for current jobs to finish or add nodes
Job stuck in ENCODING at 0%
Symptom: Job shows “Encoding” but progress stays at 0% Possible causes:- FFmpeg hasn’t written first progress line yet (wait 10-20 seconds)
- FFmpeg crashed immediately (check logs)
- Source file extremely large (4K HDR movies take time to start)
- Wait 30 seconds (large files take time to initialize)
- Check backend logs:
docker logs -f bitbonsai-backend - If FFmpeg crashed: Error shows in logs, job auto-retries
Job failed with “Disk Full”
Symptom: Job fails with error “No space left on device” Fix:- Free up disk space (delete old files, empty trash)
- Check available space:
df -h /media - Job auto-retries in 5 minutes (no manual action needed)
Job failed with “Source Corrupted”
Symptom: Job fails immediately with “Invalid data found when processing input” Possible causes:- Original file is actually corrupted (download error, disk failure)
- Unsupported codec or container format
- Partial file (download not complete)
- Test file in VLC or
ffprobe: - If file plays in VLC but fails FFprobe: Report bug (rare)
- If file doesn’t play: Re-download or skip this file
Completed job but file still H.264
Symptom: Job shows COMPLETED but file codec didn’t change Possible causes:- Original wasn’t replaced (backup failed)
- Viewing cached metadata in file explorer (refresh)
- Check file info:
ffprobe /path/to/file.mkv - Check backup exists:
/media/.bitbonsai/originals/[file] - If backup exists but file not replaced: Report bug
Related Guides
- Add Your First Library - Scan and queue videos
- Monitoring Progress - Track encoding stats
- Multi-Node Setup - Scale encoding with workers
- Troubleshooting - Fix common issues