Here might be a case where we want to swallow and just log.

The mPoolSize-- should happen before the releaseIfNotNull, to keep the pool internal state consistent.
clean() should throw IOException instead of RuntimeException...