Repository navigation
Conversation
Use the Spark-specific Delta artifact and run its contrib suites in the nightly and opt-in CI lanes. Pin malformed encryption context failure before Delta scan planning while retaining encryption declines.
A local shallow clone can reference S3 data without initializing its filesystem during metadata reads. Malformed context then fails in Spark but was bypassed by the native reader. Fall back for effective context values and verify all alias forms with real MinIO reads. Keep values out of decline reasons.
|
@dwsmith1983 The upstream draft is now open, and I addressed your fork review in
All 166 cases in the two affected suites pass, including four MinIO cases, as do Spark 4.2 and Spark 3.5 strict compilation. Production code is unchanged from the earlier 287-case full run. Could you review the follow-up coverage when you have time? I am keeping this as a draft; parser-based admission for valid contexts remains separate work. |
dwsmith1983
left a comment
There was a problem hiding this comment.
Could you review the follow-up coverage when you have time?
Looks good to me. The new DV test fails the way it should: with dvUris dropped from the gate call, the context-only DV bucket gets a native scan, and with the gates swapped, the SSE-C/CSE cases report the context reason instead of the algorithm. The baseline really reaches a native claim, since planning only decodes the DV descriptor and never opens the file. supportsS3EncryptionContext picks the right profiles today: the constant is in the hadoop-aws 3.5.0 that Spark 4.2 pulls in, and not in the 3.3.4 and 3.4.x jars the 3.5, 4.0 and 4.1 profiles use.
Which issue does this PR close?
Closes #7455.
Rationale for this change
The Spark 4.2 profile currently inherits Delta 4.3.1, which targets Spark 4.1. Delta 4.4.1 publishes the matching
delta-spark_4.2_2.13artifact.Hadoop 3.5 also introduces
fs.s3a.encryption.context. Treating it as an unconditional discovery-test exemption is unsafe: a local Delta shallow clone can reference S3 data files without initializing that bucket during metadata reads. A real MinIO reproducer showed stock Spark rejecting malformed bucket context whileCometDeltaNativeScanreturned all four rows. The previous 281-case contrib run passed and missed that shape.What changes are included in this PR?
io.delta:delta-spark_4.2_2.13:4.4.1, leaving older profile pins unchanged.run-delta-testsrouting, including required-check aggregation. Run required MinIO coverage on Spark 4.2 as well as 3.5.AddFilepaths and an unconfigured native-scan control.The separate kernel-backed
-Pcontrib-deltasurface is unchanged; this pairing is forcontrib/delta-sparkunder-Pdelta.How are these changes tested?
Validated on Apollo with a freshly built matching JNI. Production code is unchanged between the full-run head
fea770f91and review-follow-up head60deafe942261abba4577645d0478a0ca3f10007:fea770f91: 287 passed, zero failures/errors/cancellations/skips. Native scan: 119; DML: 3; MinIO: 4; admission/reference checks: 161.60deafe94, both complete affected suites pass 166 cases, zero failures/errors/skips. This includes a planner regression with local data and an S3 DV, plus all four MinIO cases. Mutations dropping DV URIs or moving the context gate before the algorithm gate each fail that regression as expected.S3_ENCRYPTION_CONTEXTcapability rather than a Spark version string. The cold driver test is documented as metadata-setup parity, and the MinIO cache setting explains why fresh filesystem initialization is required. Fallback documentation explicitly includes older Hadoop profiles.-Pstrict-warningspass.The observed run used a 2 GiB test JVM and
ActiveProcessorCount=2, with the repository's module-opening arguments, and required MinIO throughCOMET_DELTA_S3_REQUIRED=1. Archive checkouts skipped Git metadata extraction only.These are local Apollo results. The upstream draft currently reports
CI (fork)neutral; fork workflow dispatch was denied with HTTP 422. No GitHub runtime success is claimed.