private Transport borrowTransportFromPool(InetSocketAddress server) {
// The borrowObject() call could take a long time, so we hold the lock only until we get the connection pool reference
KeyedObjectPool pool = getConnectionPool();
try {
return (Transport) pool.borrowObject(server);
} catch (Exception e) {
String message = "Could not fetch transport";
log.couldNotFetchTransport(e);
throw new TransportException(message, e);
} finally {