Merge pull request #17536 from gnattu/fix-concurrent-racing

Fix concurrent ffmpeg segment racing
This commit is contained in:
Cody Robibero
2026-08-07 21:38:45 -04:00
committed by GitHub
4 changed files with 119 additions and 19 deletions
@@ -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.
@@ -151,6 +156,20 @@ public sealed class TranscodingJob : IDisposable
/// </summary>
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>