diff options
| author | gnattu <gnattuoc@me.com> | 2026-08-05 00:33:42 +0800 |
|---|---|---|
| committer | gnattu <gnattuoc@me.com> | 2026-08-05 00:33:42 +0800 |
| commit | e2586eed9b04d501cd5805711cb6ad5553c1816b (patch) | |
| tree | 9f6c2c357317c2204828c5c598144dfe4690029e /Emby.Server.Implementations/Sorting/CommunityRatingComparer.cs | |
| parent | 7fbc1ff8c0192b608a493324f2b7eafcf0a4383e (diff) | |
Fix concurrent ffmpeg segment racing
This is a nasty one. The failure mode is:
1. Request A started FFmpeg and waited for a segment.
2. Request B requested an earlier or far away segment.
3. Jellyfin thought FFmpeg should to restart at a different position.
4. Request B killed the existing transcoding job.
5. Killing that job cancelled the same token request A was using.
6. The cancellation produced http 500 to request A.
To fix this:
we lock transcoding job state changes and segment handling per playlist, and use a thread safe counter to track how many http responses are still using each job’s segments. A job is only stopped or replaced once that counter reaches zero.
Diffstat (limited to 'Emby.Server.Implementations/Sorting/CommunityRatingComparer.cs')
0 files changed, 0 insertions, 0 deletions
