Skip to content

Commit 75a698c

Browse files
authored
ESQL: Log more on circuit breaker leaks (elastic#130943)
Expand ESQL test logging when it sees circuit breaker leaks. Relates to elastic#130796
1 parent 1868594 commit 75a698c

File tree

3 files changed

+39
-21
lines changed

3 files changed

+39
-21
lines changed

x-pack/plugin/esql/qa/server/single-node/src/javaRestTest/java/org/elasticsearch/xpack/esql/qa/single_node/EsqlSpecIT.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,16 @@
1212
import org.elasticsearch.test.TestClustersThreadFilter;
1313
import org.elasticsearch.test.cluster.ElasticsearchCluster;
1414
import org.elasticsearch.xpack.esql.CsvSpecReader.CsvTestCase;
15+
import org.elasticsearch.xpack.esql.plugin.ComputeService;
1516
import org.elasticsearch.xpack.esql.qa.rest.EsqlSpecTestCase;
1617
import org.junit.ClassRule;
1718

1819
@ThreadLeakFilters(filters = TestClustersThreadFilter.class)
1920
public class EsqlSpecIT extends EsqlSpecTestCase {
2021
@ClassRule
21-
public static ElasticsearchCluster cluster = Clusters.testCluster(spec -> spec.plugin("inference-service-test"));
22+
public static ElasticsearchCluster cluster = Clusters.testCluster(
23+
spec -> spec.plugin("inference-service-test").setting("logger." + ComputeService.class.getName(), "DEBUG") // So we log a profile
24+
);
2225

2326
@Override
2427
protected String getTestRestCluster() {

x-pack/plugin/esql/qa/server/src/main/java/org/elasticsearch/xpack/esql/qa/rest/EsqlSpecTestCase.java

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import org.elasticsearch.geometry.utils.WellKnownText;
2424
import org.elasticsearch.logging.LogManager;
2525
import org.elasticsearch.logging.Logger;
26+
import org.elasticsearch.test.MapMatcher;
2627
import org.elasticsearch.test.rest.ESRestTestCase;
2728
import org.elasticsearch.test.rest.TestFeatureService;
2829
import org.elasticsearch.xcontent.XContentType;
@@ -437,16 +438,17 @@ public static void assertRequestBreakerEmpty() throws Exception {
437438
HttpEntity entity = adminClient().performRequest(new Request("GET", "/_nodes/stats")).getEntity();
438439
Map<?, ?> stats = XContentHelper.convertToMap(XContentType.JSON.xContent(), entity.getContent(), false);
439440
Map<?, ?> nodes = (Map<?, ?>) stats.get("nodes");
440-
for (Object n : nodes.values()) {
441-
Map<?, ?> node = (Map<?, ?>) n;
442-
Map<?, ?> breakers = (Map<?, ?>) node.get("breakers");
443-
Map<?, ?> request = (Map<?, ?>) breakers.get("request");
444-
assertMap(
445-
"circuit breakers not reset to 0",
446-
request,
447-
matchesMap().extraOk().entry("estimated_size_in_bytes", 0).entry("estimated_size", "0b")
441+
442+
MapMatcher breakersEmpty = matchesMap().extraOk().entry("estimated_size_in_bytes", 0).entry("estimated_size", "0b");
443+
444+
MapMatcher nodesMatcher = matchesMap();
445+
for (Object name : nodes.keySet()) {
446+
nodesMatcher = nodesMatcher.entry(
447+
name,
448+
matchesMap().extraOk().entry("breakers", matchesMap().extraOk().entry("request", breakersEmpty))
448449
);
449450
}
451+
assertMap("circuit breakers not reset to 0", stats, matchesMap().extraOk().entry("nodes", nodesMatcher));
450452
});
451453
}
452454

x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/plugin/ComputeService.java

Lines changed: 25 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -605,23 +605,36 @@ public SourceProvider createSourceProvider() {
605605
throw new IllegalStateException("no drivers created");
606606
}
607607
LOGGER.debug("using {} drivers", drivers.size());
608-
driverRunner.executeDrivers(
609-
task,
610-
drivers,
611-
transportService.getThreadPool().executor(ESQL_WORKER_THREAD_POOL_NAME),
612-
ActionListener.releaseAfter(listener.map(ignored -> {
613-
if (context.configuration().profile()) {
614-
return DriverCompletionInfo.includingProfiles(
608+
ActionListener<Void> driverListener = listener.map(ignored -> {
609+
if (LOGGER.isDebugEnabled()) {
610+
LOGGER.debug(
611+
"finished {}",
612+
DriverCompletionInfo.includingProfiles(
615613
drivers,
616614
context.description(),
617615
clusterService.getClusterName().value(),
618616
transportService.getLocalNode().getName(),
619617
localPlan.toString()
620-
);
621-
} else {
622-
return DriverCompletionInfo.excludingProfiles(drivers);
623-
}
624-
}), () -> Releasables.close(drivers))
618+
)
619+
);
620+
}
621+
if (context.configuration().profile()) {
622+
return DriverCompletionInfo.includingProfiles(
623+
drivers,
624+
context.description(),
625+
clusterService.getClusterName().value(),
626+
transportService.getLocalNode().getName(),
627+
localPlan.toString()
628+
);
629+
} else {
630+
return DriverCompletionInfo.excludingProfiles(drivers);
631+
}
632+
});
633+
driverRunner.executeDrivers(
634+
task,
635+
drivers,
636+
transportService.getThreadPool().executor(ESQL_WORKER_THREAD_POOL_NAME),
637+
ActionListener.releaseAfter(driverListener, () -> Releasables.close(drivers))
625638
);
626639
} catch (Exception e) {
627640
listener.onFailure(e);

0 commit comments

Comments
 (0)