diff options
| author | Cody Robibero <cody@robibe.ro> | 2026-08-07 21:38:45 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-08-07 21:38:45 -0400 |
| commit | f9b7f2edf77f0da0263dbb7ddeb5d60971cb3a0e (patch) | |
| tree | 8c4bd28137b12115cb8d558af48a2dbe5c162dbd /MediaBrowser.Controller/MediaEncoding/TranscodingJob.cs | |
| parent | 4192a4dd325e4f109cab0923d33344c7133447be (diff) | |
| parent | e2586eed9b04d501cd5805711cb6ad5553c1816b (diff) | |
Merge pull request #17536 from gnattu/fix-concurrent-racing
Fix concurrent ffmpeg segment racing
Diffstat (limited to 'MediaBrowser.Controller/MediaEncoding/TranscodingJob.cs')
| -rw-r--r-- | MediaBrowser.Controller/MediaEncoding/TranscodingJob.cs | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/MediaBrowser.Controller/MediaEncoding/TranscodingJob.cs b/MediaBrowser.Controller/MediaEncoding/TranscodingJob.cs index 56990d0b82..5045030b9b 100644 --- a/MediaBrowser.Controller/MediaEncoding/TranscodingJob.cs +++ b/MediaBrowser.Controller/MediaEncoding/TranscodingJob.cs @@ -15,6 +15,7 @@ public sealed class TranscodingJob : IDisposable private readonly Lock _processLock = new(); private readonly Lock _timerLock = new(); + private int _activeRequestCount; private Timer? _killTimer; /// <summary> @@ -64,7 +65,11 @@ public sealed class TranscodingJob : IDisposable /// <summary> /// Gets or sets the active request count. /// </summary> - public int ActiveRequestCount { get; set; } + public int ActiveRequestCount + { + get => Volatile.Read(ref _activeRequestCount); + set => Volatile.Write(ref _activeRequestCount, value); + } /// <summary> /// Gets or sets device id. @@ -152,6 +157,20 @@ public sealed class TranscodingJob : IDisposable public int PingTimeout { get; set; } /// <summary> + /// Increments the active request count. + /// </summary> + /// <returns>The incremented count.</returns> + public int IncrementActiveRequestCount() + => Interlocked.Increment(ref _activeRequestCount); + + /// <summary> + /// Decrements the active request count. + /// </summary> + /// <returns>The decremented count.</returns> + public int DecrementActiveRequestCount() + => Interlocked.Decrement(ref _activeRequestCount); + + /// <summary> /// Stop kill timer. /// </summary> public void StopKillTimer() |
