Skip to content

Commit 054792c

Browse files
committed
Fix instant query and address resource leak issue
Signed-off-by: Ashish Agrawal <ashisagr@amazon.com>
1 parent b0ab3b5 commit 054792c

1 file changed

Lines changed: 37 additions & 35 deletions

File tree

direct-query-core/src/main/java/org/opensearch/sql/prometheus/client/PrometheusClientImpl.java

Lines changed: 37 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -145,8 +145,8 @@ public JSONObject query(String query, Long time, Integer limit, Integer timeout)
145145
Response response = AccessController.doPrivilegedChecked(() -> this.prometheusHttpClient.newCall(request).execute());
146146

147147
logger.info("Received Prometheus response for instant query: code={}", response);
148-
// Return the full response object, not just the data field
149-
return readResponse(response);
148+
JSONObject jsonObject = readResponse(response);
149+
return jsonObject.getJSONObject("data");
150150
}
151151

152152
@Override
@@ -249,7 +249,7 @@ public JSONObject getRules(Map<String, String> queryParams) throws IOException {
249249
String queryUrl =
250250
String.format(
251251
"%s/api/v1/rules%s", prometheusUri.toString().replaceAll("/$", ""), queryString);
252-
logger.debug("Making Ruler GET request for all rules");
252+
logger.debug("Making Prometheus GET rules request: {}", queryUrl);
253253
Request request = new Request.Builder().url(queryUrl).build();
254254
try (Response response =
255255
AccessController.doPrivilegedChecked(
@@ -345,22 +345,23 @@ public String deleteAlertmanagerSilence(String silenceId) throws IOException {
345345

346346
logger.debug("Making Delete Alertmanager silence request: {}", queryUrl);
347347
Request request = new Request.Builder().url(queryUrl).delete().build();
348-
Response response =
348+
try (Response response =
349349
AccessController.doPrivilegedChecked(
350-
() -> this.alertmanagerHttpClient.newCall(request).execute());
351-
352-
if (response.isSuccessful()) {
353-
return "{\"status\":\"success\"}";
354-
} else {
355-
String errorBody = response.body() != null ? response.body().string() : "No response body";
356-
logger.error(
357-
"Delete Alertmanager Silence request failed with code: {}, error body: {}",
358-
response.code(),
359-
errorBody);
360-
throw new PrometheusClientException(
361-
String.format(
362-
"Alertmanager request failed with code: %s. Error details: %s",
363-
response.code(), errorBody));
350+
() -> this.alertmanagerHttpClient.newCall(request).execute())) {
351+
if (response.isSuccessful()) {
352+
return "{\"status\":\"success\"}";
353+
} else {
354+
String errorBody =
355+
response.body() != null ? response.body().string() : "No response body";
356+
logger.error(
357+
"Delete Alertmanager Silence request failed with code: {}, error body: {}",
358+
response.code(),
359+
errorBody);
360+
throw new PrometheusClientException(
361+
String.format(
362+
"Alertmanager request failed with code: %s. Error details: %s",
363+
response.code(), errorBody));
364+
}
364365
}
365366
}
366367

@@ -371,24 +372,25 @@ public JSONObject getAlertmanagerStatus() throws IOException {
371372

372373
logger.debug("Making Alertmanager status request: {}", queryUrl);
373374
Request request = new Request.Builder().url(queryUrl).build();
374-
Response response =
375+
try (Response response =
375376
AccessController.doPrivilegedChecked(
376-
() -> this.alertmanagerHttpClient.newCall(request).execute());
377-
378-
if (response.isSuccessful()) {
379-
String bodyString = Objects.requireNonNull(response.body()).string();
380-
logger.debug("Alertmanager status response body: {}", bodyString);
381-
return new JSONObject(bodyString);
382-
} else {
383-
String errorBody = response.body() != null ? response.body().string() : "No response body";
384-
logger.error(
385-
"Alertmanager status request failed with code: {}, error body: {}",
386-
response.code(),
387-
errorBody);
388-
throw new PrometheusClientException(
389-
String.format(
390-
"Alertmanager request failed with code: %s. Error details: %s",
391-
response.code(), errorBody));
377+
() -> this.alertmanagerHttpClient.newCall(request).execute())) {
378+
if (response.isSuccessful()) {
379+
String bodyString = Objects.requireNonNull(response.body()).string();
380+
logger.debug("Alertmanager status response body: {}", bodyString);
381+
return new JSONObject(bodyString);
382+
} else {
383+
String errorBody =
384+
response.body() != null ? response.body().string() : "No response body";
385+
logger.error(
386+
"Alertmanager status request failed with code: {}, error body: {}",
387+
response.code(),
388+
errorBody);
389+
throw new PrometheusClientException(
390+
String.format(
391+
"Alertmanager request failed with code: %s. Error details: %s",
392+
response.code(), errorBody));
393+
}
392394
}
393395
}
394396

0 commit comments

Comments
 (0)