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).
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.
Several ESQL tests fail in the
release-testsCI 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-elasticMagnitudeis registered as aNamedWriteableonly whenMAGNITUDE_SCALAR_VECTOR_FUNCTIONis enabled (snapshot). The serialization test doesn't skip in release builds.2.
VerifierTests.testMMRLimitedInput(1 test) — @ioanatia @markjhoyTest uses
FROM (...)subquery syntax gated by{this.isDevVersion()}?in the ANTLR grammar. In release builds, parsing fails before verification (ParsingExceptioninstead ofVerificationException).3.
PushExpressionToLoadIT(3 tests) — @julian-elasticTests assert
StreamingLookupOperatorin execution plan profiles butLocalExecutionPlanner.shouldUseStreamingOperator()returnsfalsewhenisSnapshot() == false, falling back toLookupOperator.4.
RestEsqlIT.testProfile(2 tests) — @carlosdelestTest expects
reduction_nanosto benullfornode_reduceplans in release builds, but the field is present with value0.5.
EsqlFunctionRegistryTests.testRegisteredFunctionHaveTests(1 test) — @nik9000snapshotRegistry()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.6.
XPackRestIT esql/60_usage telemetry(2 tests) — @quackaplopNon-snapshot telemetry test expects 35 features but gets 36 (
mmrnot filtered) and expectsjson_extractto not exist but it's registered in the main (non-snapshot) registry.features#144137All failures share the same pattern: features gated behind
isSnapshot()/isDevVersion()at runtime, but tests that don't account for the non-snapshot context. Therelease-testspipeline is specifically designed to catch these gaps.