private void deregister()

in src/main/java/org/apache/commons/pool3/impl/GenericKeyedObjectPool.java [846:868]


    private void deregister(final K k) {
        Lock lock = keyLock.readLock();
        try {
            lock.lock();
            final ObjectDeque<T> objectDeque = poolMap.get(k);
            if (objectDeque != null) {
                // Potential to remove key
                // Upgrade to write lock
                lock.unlock();
                lock = keyLock.writeLock();
                lock.lock();
                if (objectDeque.getNumInterested().decrementAndGet() == 0 && objectDeque.getCreateCount().get() == 0) {
                    // NOTE: Keys must always be removed from both poolMap and
                    // poolKeyList at the same time while protected by
                    // keyLock.writeLock()
                    poolMap.remove(k);
                    poolKeyList.remove(k);
                }
            }
        } finally {
            lock.unlock();
        }
    }