Skip to content

Commit

Permalink
Merged PR 11174: Run callbacks outside of locks
Browse files Browse the repository at this point in the history
  • Loading branch information
BrennanConroy committed Nov 11, 2020
1 parent 5f146ad commit 20ad9fa
Showing 1 changed file with 18 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,8 @@ private void CheckForReadDataRateTimeout(long timestamp)
return;
}

var timeout = false;

lock (_readTimingLock)
{
if (!_readTimingEnabled)
Expand All @@ -105,10 +107,7 @@ private void CheckForReadDataRateTimeout(long timestamp)
var elapsedSeconds = (double)_readTimingElapsedTicks / TimeSpan.TicksPerSecond;
var rate = _readTimingBytesRead / elapsedSeconds;

if (rate < _minReadRate.BytesPerSecond && !Debugger.IsAttached)
{
_timeoutHandler.OnTimeout(TimeoutReason.ReadDataRate);
}
timeout = rate < _minReadRate.BytesPerSecond && !Debugger.IsAttached;
}

// PauseTimingReads() cannot just set _timingReads to false. It needs to go through at least one tick
Expand All @@ -120,10 +119,18 @@ private void CheckForReadDataRateTimeout(long timestamp)
_readTimingPauseRequested = false;
}
}

if (timeout)
{
// Run callbacks outside of the lock
_timeoutHandler.OnTimeout(TimeoutReason.ReadDataRate);
}
}

private void CheckForWriteDataRateTimeout(long timestamp)
{
var timeout = false;

lock (_writeTimingLock)
{
// Assume overly long tick intervals are the result of server resource starvation.
Expand All @@ -135,10 +142,13 @@ private void CheckForWriteDataRateTimeout(long timestamp)
_writeTimingTimeoutTimestamp += extraTimeForTick;
}

if (_concurrentAwaitingWrites > 0 && timestamp > _writeTimingTimeoutTimestamp && !Debugger.IsAttached)
{
_timeoutHandler.OnTimeout(TimeoutReason.WriteDataRate);
}
timeout = _concurrentAwaitingWrites > 0 && timestamp > _writeTimingTimeoutTimestamp && !Debugger.IsAttached;
}

if (timeout)
{
// Run callbacks outside of the lock
_timeoutHandler.OnTimeout(TimeoutReason.WriteDataRate);
}
}

Expand Down

0 comments on commit 20ad9fa

Please sign in to comment.