diff --git a/agents-audit/src/main/java/org/apache/ranger/audit/destination/ElasticSearchAuditDestination.java b/agents-audit/src/main/java/org/apache/ranger/audit/destination/ElasticSearchAuditDestination.java index 5c536ec4ef..12982f4c09 100644 --- a/agents-audit/src/main/java/org/apache/ranger/audit/destination/ElasticSearchAuditDestination.java +++ b/agents-audit/src/main/java/org/apache/ranger/audit/destination/ElasticSearchAuditDestination.java @@ -49,6 +49,7 @@ import javax.security.auth.kerberos.KerberosTicket; import java.io.File; +import java.io.IOException; import java.security.PrivilegedActionException; import java.util.ArrayList; import java.util.Collection; @@ -319,32 +320,30 @@ private String connectionString() { } private RestHighLevelClient newClient() { + RestHighLevelClient restHighLevelClient = null; + try { if (StringUtils.isNotBlank(user) && StringUtils.isNotBlank(password) && password.contains("keytab") && new File(password).exists()) { subject = CredentialsProviderUtil.login(user, password); } RestClientBuilder restClientBuilder = getRestClientBuilder(hosts, protocol, user, password, port); + restHighLevelClient = new RestHighLevelClient(restClientBuilder); + boolean exists = false; - try (RestHighLevelClient restHighLevelClient = new RestHighLevelClient(restClientBuilder)) { - LOG.debug("Initialized client"); - - boolean exists = false; - - try { - exists = restHighLevelClient.indices().open(new OpenIndexRequest(this.index), RequestOptions.DEFAULT).isShardsAcknowledged(); - } catch (Exception e) { - LOG.warn("Error validating index {}", this.index); - } - - if (exists) { - LOG.debug("Index exists"); - } else { - LOG.info("Index does not exist"); - } + try { + exists = restHighLevelClient.indices().open(new OpenIndexRequest(this.index), RequestOptions.DEFAULT).isShardsAcknowledged(); + } catch (Exception e) { + LOG.warn("Error validating index {}", this.index); + } - return restHighLevelClient; + if (exists) { + LOG.debug("Index exists"); + } else { + LOG.info("Index does not exist"); } + + return restHighLevelClient; } catch (Throwable t) { lastLoggedAt.updateAndGet(lastLoggedAt -> { long now = System.currentTimeMillis(); @@ -358,6 +357,16 @@ private RestHighLevelClient newClient() { return lastLoggedAt; } }); + + if (restHighLevelClient != null) { + try { + restHighLevelClient.close(); + LOG.debug("Closed RestHighLevelClient after failure"); + } catch (IOException e) { + LOG.warn("Error closing RestHighLevelClient: {}", e.getMessage(), e); + } + } + return null; } }