Your question is Identify a Race Condition. Take a moment with it on the right.
Talk me through your thinking if you like. When you're confident, submit your answer and I'll grade it like a real screen (7/10 or better passes).
A Microsoft service tracks how many client connections are currently open so it can cap load and log activity. QA flagged that under a load test with many concurrent clients, the reported active-connection count drifts away from the true number, and it occasionally exceeds the documented cap of 1000.
public class ConnectionTracker
{
private int _activeConnections = 0;
private readonly List<string> _log = new List<string>();
public void OnConnectionOpened(string connectionId)
{
if (_activeConnections < 1000)
{
_activeConnections++;
_log.Add($"opened {connectionId}, total {_activeConnections}");
}
}
public void OnConnectionClosed(string connectionId)
{
_activeConnections--;
_log.Add($"closed {connectionId}, total {_activeConnections}");
}
public int GetActiveCount()
{
return _activeConnections;
}
}
OnConnectionOpened and OnConnectionClosed are both called from many worker threads handling connection events concurrently. Identify the race condition(s) here and explain exactly how they produce the drift and the cap violation QA is seeing.