Skip to content

ESQL release-test failures: features not properly gated for non-snapshot builds #144086

@costin

Description

@costin

Several ESQL tests fail in the release-tests CI pipeline (runs with -Dbuild.snapshot=false). These are all caused by features or tests that don't properly account for the non-snapshot build context.

Build scans: checkPart3 (11 failures), checkPart6 (2 failures).
Observed on #143992 (unrelated to that PR's changes).


1. MagnitudeSerializationTests (4 tests) — @svilen-mihaylov-elastic

Magnitude is registered as a NamedWriteable only when MAGNITUDE_SCALAR_VECTOR_FUNCTION is enabled (snapshot). The serialization test doesn't skip in release builds.

./gradlew :x-pack:plugin:esql:test --tests "*.MagnitudeSerializationTests" -Dbuild.snapshot=false -Dtests.jvm.argline=-Dbuild.snapshot=false

2. VerifierTests.testMMRLimitedInput (1 test) — @ioanatia @markjhoy

Test uses FROM (...) subquery syntax gated by {this.isDevVersion()}? in the ANTLR grammar. In release builds, parsing fails before verification (ParsingException instead of VerificationException).

./gradlew :x-pack:plugin:esql:test --tests "*.VerifierTests.testMMRLimitedInput" -Dbuild.snapshot=false -Dtests.jvm.argline=-Dbuild.snapshot=false

3. PushExpressionToLoadIT (3 tests) — @julian-elastic

Tests assert StreamingLookupOperator in execution plan profiles but LocalExecutionPlanner.shouldUseStreamingOperator() returns false when isSnapshot() == false, falling back to LookupOperator.

./gradlew :x-pack:plugin:esql:qa:server:single-node:javaRestTest --tests "*.PushExpressionToLoadIT" -Dbuild.snapshot=false -Dtests.jvm.argline=-Dbuild.snapshot=false

4. RestEsqlIT.testProfile (2 tests) — @carlosdelest

Test expects reduction_nanos to be null for node_reduce plans in release builds, but the field is present with value 0.

./gradlew :x-pack:plugin:esql:qa:server:single-node:javaRestTest --tests "*.RestEsqlIT.testProfile" -Dbuild.snapshot=false -Dtests.jvm.argline=-Dbuild.snapshot=false

5. EsqlFunctionRegistryTests.testRegisteredFunctionHaveTests (1 test) — @nik9000

snapshotRegistry() returns the base registry in release builds (no Delay, Magnitude, Clamp, etc.), but the "allowed missing" test list is tuned for the snapshot registry, causing a mismatch.

./gradlew :x-pack:plugin:esql:test --tests "*.EsqlFunctionRegistryTests.testRegisteredFunctionHaveTests" -Dbuild.snapshot=false -Dtests.jvm.argline=-Dbuild.snapshot=false

6. XPackRestIT esql/60_usage telemetry (2 tests) — @quackaplop

Non-snapshot telemetry test expects 35 features but gets 36 (mmr not filtered) and expects json_extract to not exist but it's registered in the main (non-snapshot) registry.

./gradlew :x-pack:plugin:yamlRestTest --tests "*.XPackRestIT" -Dtests.method="test {p0=esql/60_usage/*non-snapshot*}" -Dbuild.snapshot=false -Dtests.jvm.argline=-Dbuild.snapshot=false

All failures share the same pattern: features gated behind isSnapshot()/isDevVersion() at runtime, but tests that don't account for the non-snapshot context. The release-tests pipeline is specifically designed to catch these gaps.

Metadata

Metadata

Labels

:Analytics/ES|QLAKA ESQL>testIssues or PRs that are addressing/adding tests>test-failureTriaged test failures from CITeam:AnalyticsMeta label for analytical engine team (ESQL/Aggs/Geo)needs:riskRequires assignment of a risk label (low, medium, blocker)

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions