aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller/MediaEncoding/TranscodingJob.cs
diff options
context:
space:
mode:
authorCody Robibero <cody@robibe.ro>2026-08-07 21:38:45 -0400
committerGitHub <noreply@github.com>2026-08-07 21:38:45 -0400
commitf9b7f2edf77f0da0263dbb7ddeb5d60971cb3a0e (patch)
tree8c4bd28137b12115cb8d558af48a2dbe5c162dbd /MediaBrowser.Controller/MediaEncoding/TranscodingJob.cs
parent4192a4dd325e4f109cab0923d33344c7133447be (diff)
parente2586eed9b04d501cd5805711cb6ad5553c1816b (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.cs21
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()