in src/main/java/org/apache/commons/pool3/impl/GenericKeyedObjectPool.java [1315:1327]
public void invalidateObject(final K key, final T obj, final DestroyMode destroyMode) throws E {
final ObjectDeque<T> objectDeque = poolMap.get(key);
final PooledObject<T> p = objectDeque != null ? objectDeque.getAllObjects().get(new IdentityWrapper<>(obj)) : null;
if (p == null) {
throw new IllegalStateException(appendStats("Object not currently part of this pool"));
}
synchronized (p) {
if (p.getState() != PooledObjectState.INVALID) {
destroy(key, p, true, destroyMode);
reuseCapacity();
}
}
}