Skip to content

Commit 844ff80

Browse files
committed
Harden FrozenEngineTests#testCircuitBreakerAccounting
This test tries to compare the CB stats from an InternalEngine and a FrozenEngine but is subject to segement merges that might finish and get committed after we read the breaker stats. This can cause occational test failures. Closes #36207
1 parent a53e865 commit 844ff80

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

x-pack/plugin/core/src/test/java/org/elasticsearch/index/engine/FrozenEngineTests.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
import org.apache.lucene.index.DirectoryReader;
99
import org.apache.lucene.index.FilterDirectoryReader;
10+
import org.apache.lucene.index.NoMergePolicy;
1011
import org.apache.lucene.search.MatchAllDocsQuery;
1112
import org.apache.lucene.search.ReferenceManager;
1213
import org.apache.lucene.search.TopDocs;
@@ -138,16 +139,17 @@ public void testCircuitBreakerAccounting() throws IOException {
138139
final AtomicLong globalCheckpoint = new AtomicLong(SequenceNumbers.NO_OPS_PERFORMED);
139140
try (Store store = createStore()) {
140141
CountingRefreshListener listener = new CountingRefreshListener();
141-
EngineConfig config = config(defaultSettings, store, createTempDir(), newMergePolicy(), null, listener, null,
142-
globalCheckpoint::get, new HierarchyCircuitBreakerService(defaultSettings.getSettings(),
142+
EngineConfig config = config(defaultSettings, store, createTempDir(),
143+
NoMergePolicy.INSTANCE, // we don't merge we want no background merges to happen to ensure we have consistent breaker stats
144+
null, listener, null, globalCheckpoint::get, new HierarchyCircuitBreakerService(defaultSettings.getSettings(),
143145
new ClusterSettings(defaultSettings.getNodeSettings(), ClusterSettings.BUILT_IN_CLUSTER_SETTINGS)));
144146
CircuitBreaker breaker = config.getCircuitBreakerService().getBreaker(CircuitBreaker.ACCOUNTING);
145147
long expectedUse;
146148
try (InternalEngine engine = createEngine(config)) {
147149
addDocuments(globalCheckpoint, engine);
148-
engine.refresh("test"); // pull the reader
150+
engine.flush(false, true); // first flush to make sure we have a commit that we open in the frozen engine blow.
151+
engine.refresh("test"); // pull the reader to account for RAM in the breaker.
149152
expectedUse = breaker.getUsed();
150-
engine.flushAndClose();
151153
}
152154
assertTrue(expectedUse > 0);
153155
assertEquals(0, breaker.getUsed());

0 commit comments

Comments
 (0)