private RetryCapacity AddNewRetryCapacity(string serviceURL)
{
RetryCapacity retryCapacity;
_rwlock.EnterUpgradeableReadLock();
try
{
if (!(_serviceUrlToCapacityMap.TryGetValue(serviceURL, out retryCapacity)))
{
_rwlock.EnterWriteLock();
try
{
retryCapacity = new RetryCapacity(THROTTLE_RETRY_REQUEST_COST * THROTTLED_RETRIES);
_serviceUrlToCapacityMap.Add(serviceURL, retryCapacity);
return retryCapacity;
}
finally
{
_rwlock.ExitWriteLock();
}
}
else
{
return retryCapacity;
}
}
finally
{
_rwlock.ExitUpgradeableReadLock();
}
}