Fixed
- The actual cause of stalled progress bars under DB lock contention. v0.3.36 throttled progress DB writes to once per 3 seconds per job (good — fewer writes). But each individual write was still awaited inside the converter's stderr-read loop, so when SQLite's WAL write lock was contended (
busy_timeout=30000lets a write wait up to 30s), the loop blocked on the slow write while ffmpeg's progress lines piled up unread in the pipe. When the DB finally returned, the queued progress lines flushed in a burst and the bar jumped 20%+. Live diagnostic data: encoder making smooth 200 fps progress while DB-recordedprogressfield stayed at 19.59% for 50 seconds, then jumped to 41.03%. Fix: fire-and-forget the DB write withasyncio.create_taskso the stderr loop never blocks on persistence. Terminal flush (≥99.99%) is still awaited so the final value is durable. Same change applied to the audio-remuxaudio_progress_cb.
Docker images
Pinned to this release:
docker pull ghcr.io/i-ial9000/shrinkerr:0.3.40 # portable (amd64 + arm64, CPU)
docker pull ghcr.io/i-ial9000/shrinkerr:0.3.40-nvenc # x86_64 + NVIDIA GPU (NVENC)
docker pull ghcr.io/i-ial9000/shrinkerr:0.3.40-edge # as above but ffmpeg master
docker pull ghcr.io/i-ial9000/shrinkerr:0.3.40-edge-nvencFloating tags (:latest, :edge, :nvenc, :edge-nvenc) track the most recent release of each lineage.