public void Free(SyncPeerAllocation syncPeerAllocation) { if (_logger.IsTrace) { _logger.Trace($"Returning {syncPeerAllocation}"); } if (!syncPeerAllocation.CanBeReplaced) { _peerBadness.TryRemove(syncPeerAllocation.Current, out _); } _allocations.TryRemove(syncPeerAllocation, out _); syncPeerAllocation.Cancel(); }
/// <summary> /// Frees the allocation space borrowed earlier for some sync consumer. /// </summary> /// <param name="syncPeerAllocation">Allocation to free</param> public void Free(SyncPeerAllocation syncPeerAllocation) { if (_logger.IsTrace) { _logger.Trace($"Returning {syncPeerAllocation}"); } _replaceableAllocations.TryRemove(syncPeerAllocation, out _); syncPeerAllocation.Cancel(); if (_replaceableAllocations.Count > 1024 * 16) { _logger.Warn($"Peer allocations leakage - {_replaceableAllocations.Count}"); } _signals.Set(); }
public void Free(SyncPeerAllocation syncPeerAllocation) { if (_logger.IsTrace) { _logger.Trace($"Returning {syncPeerAllocation}"); } PeerInfo peerInfo = syncPeerAllocation.Current; if (peerInfo != null && !syncPeerAllocation.CanBeReplaced) { _peerBadness.TryRemove(peerInfo, out _); } _allocations.TryRemove(syncPeerAllocation, out _); syncPeerAllocation.Cancel(); if (_allocations.Count > 1024 * 16) { _logger.Warn($"Peer allocations leakage - {_allocations.Count}"); } }