diff --git a/test/external-modules/esql-heap-attack/src/javaRestTest/java/org/elasticsearch/xpack/esql/heap_attack/HeapAttackSubqueryIT.java b/test/external-modules/esql-heap-attack/src/javaRestTest/java/org/elasticsearch/xpack/esql/heap_attack/HeapAttackSubqueryIT.java index a3b29327bb4d4..8a4329a92ca34 100644 --- a/test/external-modules/esql-heap-attack/src/javaRestTest/java/org/elasticsearch/xpack/esql/heap_attack/HeapAttackSubqueryIT.java +++ b/test/external-modules/esql-heap-attack/src/javaRestTest/java/org/elasticsearch/xpack/esql/heap_attack/HeapAttackSubqueryIT.java @@ -245,18 +245,27 @@ private void verifyLoadDocSequenceResults(int docs, String dataType) throws IOEx columns.add(column); } - Map response = buildSubqueriesWithSortInMainQuery(MAX_SUBQUERIES, "manybigfields", "f000"); - assertEquals(columns, response.get("columns")); + // serverless triggers CBE occasionally. + try { + Map response = buildSubqueriesWithSortInMainQuery(MAX_SUBQUERIES, "manybigfields", "f000"); + assertEquals(columns, response.get("columns")); - List values = (List) response.get("values"); - assertEquals(docs * MAX_SUBQUERIES, values.size()); + List values = (List) response.get("values"); + assertEquals(docs * MAX_SUBQUERIES, values.size()); - for (Object rowObj : values) { - List row = (List) rowObj; - assertEquals(1000, row.size()); - for (int f = 0; f < 1000; f++) { - assertEquals(Integer.toString(f % 10).repeat(1024), row.get(f)); + for (Object rowObj : values) { + List row = (List) rowObj; + assertEquals(1000, row.size()); + for (int f = 0; f < 1000; f++) { + assertEquals(Integer.toString(f % 10).repeat(1024), row.get(f)); + } } + } catch (ResponseException e) { + Map map = responseAsMap(e.getResponse()); + assertMap( + map, + matchesMap().entry("status", 429).entry("error", matchesMap().extraOk().entry("type", "circuit_breaking_exception")) + ); } }