You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The Delta Spark UT pipeline landed in #12388 (fixes #9296). It runs delta-io/delta's spark test suite against a Gluten Velox bundle and gates each run against a committed baseline of known failures.
That baseline is currently 735 known failures out of 19,073 tests. This issue tracks the work to bring that number down and to improve the pipeline itself. It is a tracking issue only — discussion belongs in the linked issues.
1. Correctness gaps behind the 735 baseline entries
These are not a consequence of Gluten declining to offload: a plan Gluten cannot offload should fall back to vanilla Spark and the test should still pass. Most entries below are bugs -- fallback not happening, metrics differing from vanilla, or the native side failing. A separate group is expected rather than fixable here: tests that assert on the query plan see a different plan once Gluten offloads, which is by design. Those are worth splitting out during triage, since they should either be fixed upstream (as delta-io/delta#7104 and delta-io/delta#7105 were) or stay in the baseline permanently.
The largest clusters, counted from known-failures.txt by suite:
Two clusters cut across suites, so they don't show up in the table above (counts from the triage in #12388): ~226 tests failing on IncrementMetric (#9003) and ~47 on the Delta stats tracker ClassCastException when the stats plan can't be offloaded (#12538).
Related type-support gap: TIMESTAMP_NTZ (#11622), which is one trigger of #12538.
Cache and reuse the fully built Velox native library across workflows (not ccache).gluten-delta/** and backends-velox/src-delta*/** match both velox_backend_x86.yml and delta_spark_ut.yml, so those PRs build the native lib twice (~10 min). Suggested by @philo-he and @zhouyuan. A prebuilt-library cache is preferable to artifact-passing: artifacts are scoped to a workflow run and there is no cross-workflow needs, so the Delta workflow would have to poll a sibling run it races with, whereas a prebuilt-library cache populated by push-to-main has no ordering problem. The key must cover cpp/**, the build flags and the base image — unlike ccache, where a bad key only costs a rebuild, a stale hit on a prebuilt lib means silently testing the wrong binary. A miss must fall back to building.
Cover more Spark versions. The workflow already takes spark_version / delta_ref inputs, and pom.xml pairs Spark 3.5→Delta 3.3.2, 4.0→4.0.1, 4.1→4.1.0. The blocker is the baseline: each combination needs its own known-failures.txt and a bootstrap run. Suggested starting point: Spark 3.5 as a nightly-only second leg, which keeps per-PR cost unchanged. Requested by @zhouyuan.
Remove the overlapping imported Delta suites.@malinjawi identified 8 suites imported from delta-io/delta (DeltaSuite, DeleteSQLSuite + DV variants, UpdateSQLSuite, DeltaDDLSuite, DeltaInsertIntoTableSuite, ClusteredTableClusteringSuite, OptimizeMetadataOnlyDeltaQuerySuite, OptimizedWritesSuite) that this pipeline now duplicates — but only on the Spark 4.1 leg. They are the only Delta coverage on Spark 3.5 and 4.0, so this is blocked on the Spark 3.5 leg above. Raised by @zhztheplayer.
Delta 4.3.0 support. Attempted during [VL][Delta] Add Delta Spark UT pipeline gated against a known-failures baseline #12388: the bundle is compiled against Delta 4.1.0 and hits a binary-incompatible change (IdentityColumn.logTableWrite, first param Snapshot → SnapshotDescriptor), which NoSuchMethodErrors on every write. Needs the bundle built against 4.3.0.
Refresh the baseline by running Delta Spark UT (Gluten) with update_baseline=true and committing the produced artifact; see .github/workflows/util/delta-spark-ut/README.md. - A test that fails consistently belongs in known-failures.txt. flaky-tests.txt / flaky-error-patterns.txt are only for tests that genuinely pass on some runs and fail on others — quarantining a deterministic failure hides a real bug. - The nightly run enforces fail_on_fixed=true, so when a fix lands, the nightly goes red until the now-passing tests are removed from the baseline. That is the intended signal.
The Delta Spark UT pipeline landed in #12388 (fixes #9296). It runs delta-io/delta's
sparktest suite against a Gluten Velox bundle and gates each run against a committed baseline of known failures.That baseline is currently 735 known failures out of 19,073 tests. This issue tracks the work to bring that number down and to improve the pipeline itself. It is a tracking issue only — discussion belongs in the linked issues.
1. Correctness gaps behind the 735 baseline entries
These are not a consequence of Gluten declining to offload: a plan Gluten cannot offload should fall back to vanilla Spark and the test should still pass. Most entries below are bugs -- fallback not happening, metrics differing from vanilla, or the native side failing. A separate group is expected rather than fixable here: tests that assert on the query plan see a different plan once Gluten offloads, which is by design. Those are worth splitting out during triage, since they should either be fixed upstream (as delta-io/delta#7104 and delta-io/delta#7105 were) or stay in the baseline permanently.
The largest clusters, counted from
known-failures.txtby suite:DescribeDeltaHistorySuite+...WithCatalogOwnedBatch100Suitestats.DataSkippingDeltaV1*(7 suite variants, 34 of them column-mapping)ImplicitMergeCastingSuite+ImplicitStreamingMergeCastingSuite(overflow / storeAssignmentPolicy)commands.backfill.RowTrackingBackfillConflicts(DV)Suiteio.delta.tables.DeltaTableHadoopOptionsSuite— Hadoop FS optionsTwo clusters cut across suites, so they don't show up in the table above (counts from the triage in #12388): ~226 tests failing on
IncrementMetric(#9003) and ~47 on the Delta stats trackerClassCastExceptionwhen the stats plan can't be offloaded (#12538).Related type-support gap: TIMESTAMP_NTZ (#11622), which is one trigger of #12538.
DescribeDeltaHistory,ImplicitMergeCasting,RowTrackingBackfillandDataSkippingclusters and file one issue per root cause2. Native bugs currently worked around in CI
Both of these are hidden by the pipeline today, so the workarounds should be removed together with the fixes.
flaky-error-patterns.txt(2 patterns). Remove those entries when fixed.DeletionVectorsSuite2B-row tests are force-failed insetup-delta.shto stop them OOM-killing the shard. Remove that patch when fixed.3. Pipeline improvements
gluten-delta/**andbackends-velox/src-delta*/**match bothvelox_backend_x86.ymlanddelta_spark_ut.yml, so those PRs build the native lib twice (~10 min). Suggested by @philo-he and @zhouyuan. A prebuilt-library cache is preferable to artifact-passing: artifacts are scoped to a workflow run and there is no cross-workflowneeds, so the Delta workflow would have to poll a sibling run it races with, whereas a prebuilt-library cache populated by push-to-mainhas no ordering problem. The key must covercpp/**, the build flags and the base image — unlike ccache, where a bad key only costs a rebuild, a stale hit on a prebuilt lib means silently testing the wrong binary. A miss must fall back to building.spark_version/delta_refinputs, andpom.xmlpairs Spark 3.5→Delta 3.3.2, 4.0→4.0.1, 4.1→4.1.0. The blocker is the baseline: each combination needs its ownknown-failures.txtand a bootstrap run. Suggested starting point: Spark 3.5 as a nightly-only second leg, which keeps per-PR cost unchanged. Requested by @zhouyuan.DeltaSuite,DeleteSQLSuite+ DV variants,UpdateSQLSuite,DeltaDDLSuite,DeltaInsertIntoTableSuite,ClusteredTableClusteringSuite,OptimizeMetadataOnlyDeltaQuerySuite,OptimizedWritesSuite) that this pipeline now duplicates — but only on the Spark 4.1 leg. They are the only Delta coverage on Spark 3.5 and 4.0, so this is blocked on the Spark 3.5 leg above. Raised by @zhztheplayer.IdentityColumn.logTableWrite, first paramSnapshot→SnapshotDescriptor), whichNoSuchMethodErrors on every write. Needs the bundle built against 4.3.0./delta-testPR comment opt-in. Replaces the proposedrun-delta-cilabel: contributors cannot apply labels, but anyone can comment/delta-testto force the full suite on a PR skipped by thepaths:filter. Implemented in [GLUTEN-12743][CI] Let contributors trigger the Delta Spark UT with a /delta-test PR comment #12781.FileSourceScanExec→FileSourceScanLike) onceDELTA_REFmoves to a release that contains them.setup-delta.shalready skips a cherry-pick that is already applied, so this is cleanup.Notes for whoever picks these up
update_baseline=trueand committing the produced artifact; see.github/workflows/util/delta-spark-ut/README.md. - A test that fails consistently belongs inknown-failures.txt.flaky-tests.txt/flaky-error-patterns.txtare only for tests that genuinely pass on some runs and fail on others — quarantining a deterministic failure hides a real bug. - The nightly run enforcesfail_on_fixed=true, so when a fix lands, the nightly goes red until the now-passing tests are removed from the baseline. That is the intended signal.