diff --git a/CHANGELOG.md b/CHANGELOG.md index 1c2e7f1..f33fed5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ - Add support for Druid 35.0.1 ([#138]). - Add support for Druid 34.0.0 (deprecated) ([#134], [#138]). +### Fixed + +- Reuse HttpClient instance across authorize() calls ([#143]). + ### Removed - Remove support for Druid 33.0.0 ([#138]). @@ -14,6 +18,7 @@ [#134]: https://github.com/stackabletech/druid-opa-authorizer/pull/134 [#138]: https://github.com/stackabletech/druid-opa-authorizer/pull/138 +[#143]: https://github.com/stackabletech/druid-opa-authorizer/pull/143 ## [0.7.0] - 2025-05-31 diff --git a/src/main/java/tech/stackable/druid/opaauthorizer/OpaAuthorizer.java b/src/main/java/tech/stackable/druid/opaauthorizer/OpaAuthorizer.java index 63d1a2f..551ee15 100644 --- a/src/main/java/tech/stackable/druid/opaauthorizer/OpaAuthorizer.java +++ b/src/main/java/tech/stackable/druid/opaauthorizer/OpaAuthorizer.java @@ -24,10 +24,12 @@ public class OpaAuthorizer implements Authorizer { private static final Logger LOG = new Logger(OpaAuthorizer.class); private final String opaUri; private final ObjectMapper objectMapper; + private final HttpClient httpClient; @JsonCreator public OpaAuthorizer(@JsonProperty("name") String name, @JsonProperty("opaUri") String opaUri) { this.opaUri = opaUri; + this.httpClient = HttpClient.newHttpClient(); objectMapper = new ObjectMapper() // https://github.com/stackabletech/druid-opa-authorizer/issues/72 @@ -53,8 +55,7 @@ public Access authorize( return new Access(false, "Failed to create the OPA request JSON: " + e); } - LOG.trace("Creating HTTP Client and executing post."); - var client = HttpClient.newHttpClient(); + LOG.trace("Executing OPA post."); try { var request = HttpRequest.newBuilder() @@ -63,7 +64,7 @@ public Access authorize( .POST(HttpRequest.BodyPublishers.ofString(msgJson)) .build(); - var response = client.send(request, HttpResponse.BodyHandlers.ofString()); + var response = httpClient.send(request, HttpResponse.BodyHandlers.ofString()); LOG.debug("OPA Response code: %s - %s", response.statusCode(), response.body()); LOG.trace("Parsing OPA response.");