bhattmanish98 commented on code in PR #7817: URL: https://github.com/apache/hadoop/pull/7817#discussion_r2280760232
########## hadoop-tools/hadoop-azure/src/main/java/org/apache/hadoop/fs/azurebfs/services/AbfsConnectionManager.java: ########## @@ -89,23 +121,56 @@ public ConnectionRequest requestConnection(final HttpRoute route, */ @Override public HttpClientConnection get(final long timeout, - final TimeUnit timeUnit) - throws InterruptedException, ExecutionException, - ConnectionPoolTimeoutException { + final TimeUnit timeUnit) throws ExecutionException { String requestId = UUID.randomUUID().toString(); logDebug("Connection requested for request {}", requestId); + if (!route.getTargetHost().equals(baseHost)) { + // If the route target host does not match the base host, create a new connection + logDebug("Route target host {} does not match base host {}, creating new connection", + route.getTargetHost(), baseHost); + return createNewConnection(); + } try { - HttpClientConnection clientConn = kac.get(); - if (clientConn != null) { - logDebug("Connection retrieved from KAC: {} for requestId: {}", - clientConn, requestId); - return clientConn; + HttpClientConnection conn = kac.get(); + + // If a valid connection is available, return it and trigger background warm-up if needed + if (conn != null) { + triggerConnectionWarmupIfNeeded(); + return conn; + } + + // No connection available — wait up to timeout for one to appear + synchronized (connectionLock) { + triggerConnectionWarmupIfNeeded(); + + final long timeoutMs = 500L; + final long deadline = System.currentTimeMillis() + timeoutMs; + + while ((conn = kac.get()) == null + && System.currentTimeMillis() < deadline) { + long waitTime = deadline - System.currentTimeMillis(); + if (waitTime <= 0) { + break; + } + + try { + connectionLock.wait(waitTime); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); Review Comment: With the current flow, it is expected that even if warmup failed there is no need to raise an expection. Thats why not throwing the exception. But with the next PR changes where we are making changes for Apache to JDK fallback, will throw an exception and that we will help us know fallback to JDK in init flow. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: common-issues-unsubscr...@hadoop.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: common-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-issues-h...@hadoop.apache.org