示例#1
0
        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();
        }
示例#2
0
        /// <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();
        }
示例#3
0
        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}");
            }
        }