Skip to content

Commit d5455db

Browse files
Refactor HttpAPIClientHelper to improve response cleanup handling
1 parent 1469ac7 commit d5455db

File tree

2 files changed

+7
-8
lines changed

2 files changed

+7
-8
lines changed

client-v2/src/main/java/com/clickhouse/client/api/Client.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1605,6 +1605,7 @@ public CompletableFuture<QueryResponse> query(String sqlQuery, Map<String, Objec
16051605
if (httpResponse.getCode() == HttpStatus.SC_SERVICE_UNAVAILABLE) {
16061606
LOG.warn("Failed to get response. Server returned {}. Retrying. (Duration: {})", System.nanoTime() - startTime, httpResponse.getCode());
16071607
selectedEndpoint = getNextAliveNode();
1608+
HttpAPIClientHelper.closeQuietly(httpResponse);
16081609
continue;
16091610
}
16101611

@@ -1625,7 +1626,7 @@ public CompletableFuture<QueryResponse> query(String sqlQuery, Map<String, Objec
16251626
return new QueryResponse(httpResponse, responseFormat, requestSettings, metrics);
16261627

16271628
} catch (Exception e) {
1628-
httpClientHelper.closeQuietly(httpResponse);
1629+
HttpAPIClientHelper.closeQuietly(httpResponse);
16291630
lastException = httpClientHelper.wrapException(String.format("Query request failed (Attempt: %s/%s - Duration: %s)",
16301631
(i + 1), (retries + 1), System.nanoTime() - startTime), e);
16311632
if (httpClientHelper.shouldRetry(e, requestSettings.getAllSettings())) {

client-v2/src/main/java/com/clickhouse/client/api/internal/HttpAPIClientHelper.java

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -454,14 +454,9 @@ public ClassicHttpResponse executeRequest(Endpoint server, Map<String, Object> r
454454
if (httpResponse.getCode() == HttpStatus.SC_PROXY_AUTHENTICATION_REQUIRED) {
455455
throw new ClientMisconfigurationException("Proxy authentication required. Please check your proxy settings.");
456456
} else if (httpResponse.getCode() == HttpStatus.SC_BAD_GATEWAY) {
457-
httpResponse.close();
458457
throw new ClientException("Server returned '502 Bad gateway'. Check network and proxy settings.");
459458
} else if (httpResponse.getCode() >= HttpStatus.SC_BAD_REQUEST || httpResponse.containsHeader(ClickHouseHttpProto.HEADER_EXCEPTION_CODE)) {
460-
try {
461-
throw readError(httpResponse);
462-
} finally {
463-
httpResponse.close();
464-
}
459+
throw readError(httpResponse);
465460
}
466461
return httpResponse;
467462

@@ -473,10 +468,13 @@ public ClassicHttpResponse executeRequest(Endpoint server, Map<String, Object> r
473468
closeQuietly(httpResponse);
474469
LOG.warn("Failed to connect to '{}': {}", server.getBaseURL(), e.getMessage());
475470
throw e;
471+
} catch (Exception e) {
472+
closeQuietly(httpResponse);
473+
throw e;
476474
}
477475
}
478476

479-
public void closeQuietly(ClassicHttpResponse httpResponse) {
477+
public static void closeQuietly(ClassicHttpResponse httpResponse) {
480478
if (httpResponse != null) {
481479
try {
482480
httpResponse.close();

0 commit comments

Comments
 (0)