From 12d81a61da1190d86713e6785d10b510eb4722cd Mon Sep 17 00:00:00 2001 From: Lee Hinman Date: Wed, 20 Feb 2019 14:34:19 -0700 Subject: [PATCH 1/2] Wrap accounting breaker check in assertBusy There may be situations where indices have not yet been closed from a Lucene perspective, causing the breaker to not immediately be at 0 Relates to #30290 --- .../org/elasticsearch/test/InternalTestCluster.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/test/framework/src/main/java/org/elasticsearch/test/InternalTestCluster.java b/test/framework/src/main/java/org/elasticsearch/test/InternalTestCluster.java index 2c02abab9dc1d..0aa9f6d0f69e6 100644 --- a/test/framework/src/main/java/org/elasticsearch/test/InternalTestCluster.java +++ b/test/framework/src/main/java/org/elasticsearch/test/InternalTestCluster.java @@ -2457,9 +2457,15 @@ public void ensureEstimatedStats() { final CircuitBreakerService breakerService = getInstanceFromNode(CircuitBreakerService.class, nodeAndClient.node); CircuitBreaker fdBreaker = breakerService.getBreaker(CircuitBreaker.FIELDDATA); assertThat("Fielddata breaker not reset to 0 on node: " + name, fdBreaker.getUsed(), equalTo(0L)); - CircuitBreaker acctBreaker = breakerService.getBreaker(CircuitBreaker.ACCOUNTING); - assertThat("Accounting breaker not reset to 0 on node: " + name + ", are there still Lucene indices around?", - acctBreaker.getUsed(), equalTo(0L)); + try { + assertBusy(() -> { + CircuitBreaker acctBreaker = breakerService.getBreaker(CircuitBreaker.ACCOUNTING); + assertThat("Accounting breaker not reset to 0 on node: " + name + ", are there still Lucene indices around?", + acctBreaker.getUsed(), equalTo(0L)); + }); + } catch (Exception e) { + fail("Exception during check for accounting breaker reset to 0: " + e); + } // Anything that uses transport or HTTP can increase the // request breaker (because they use bigarrays), because of // that the breaker can sometimes be incremented from ping From 54d49d0b829044351e0f01058a251c90243764bb Mon Sep 17 00:00:00 2001 From: Lee Hinman Date: Wed, 20 Feb 2019 15:28:16 -0700 Subject: [PATCH 2/2] Don't swallow exceptions --- .../main/java/org/elasticsearch/test/InternalTestCluster.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/framework/src/main/java/org/elasticsearch/test/InternalTestCluster.java b/test/framework/src/main/java/org/elasticsearch/test/InternalTestCluster.java index 0aa9f6d0f69e6..563b8b0b7eb68 100644 --- a/test/framework/src/main/java/org/elasticsearch/test/InternalTestCluster.java +++ b/test/framework/src/main/java/org/elasticsearch/test/InternalTestCluster.java @@ -2464,7 +2464,7 @@ public void ensureEstimatedStats() { acctBreaker.getUsed(), equalTo(0L)); }); } catch (Exception e) { - fail("Exception during check for accounting breaker reset to 0: " + e); + throw new AssertionError("Exception during check for accounting breaker reset to 0", e); } // Anything that uses transport or HTTP can increase the // request breaker (because they use bigarrays), because of @@ -2480,7 +2480,7 @@ public void ensureEstimatedStats() { assertThat("Request breaker not reset to 0 on node: " + name, reqBreaker.getUsed(), equalTo(0L)); }); } catch (Exception e) { - fail("Exception during check for request breaker reset to 0: " + e); + throw new AssertionError("Exception during check for request breaker reset to 0", e); } NodeService nodeService = getInstanceFromNode(NodeService.class, nodeAndClient.node);