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
{{ message }}
Repository navigation
Pair the spark-4.2 profile with Delta 4.4 and run the Delta contrib tests on it #7455
The Delta contrib can't run on Spark 4.2 as built. The spark-4.2 profile pins delta.spark.version to 4.3.1, and the comment above it says no Delta release targets Spark 4.2 yet. That was true when the contrib merged, but Delta 4.4.0 (August 20) added Spark 4.2 support, and 4.4.1 is the current release. The support table in contrib/delta-spark/README.md and the comment on the delta_4_1 job in ci.yml make the same assumption, so the contrib suites have never run on 4.2.
With the pinned version, Delta itself fails on Spark 4.2.0: its own CREATE TABLE throws NoSuchMethodError on CatalogStorageFormat.copy, before Comet is involved.
Describe the potential solution
Set delta.spark.version to 4.4.1 in the spark-4.2 profile, add a delta_4_2 caller in ci.yml, and update the README table and the user guide to list Spark 4.2 with Delta 4.4.x.
Additional context
With Delta 4.4.1 it works in a quick test against 1.2.0. I built the contrib with -Pspark-4.2,delta (the jar is byte-identical whether it compiles against 4.3.1 or 4.4.1), then ran comet-spark-spark4.2_2.13-1.2.0 from Maven Central with delta-spark 4.4.1 on apache/spark:4.2.0. A table with deletion vectors read through CometDeltaNativeScan, and the results matched Spark's reader with spark.comet.scan.delta.enabled=false. That's one query, not the contrib suites.
I reproduced the Spark 4.2 pairing with both Delta 4.4.0 and 4.4.1 on Comet 1.2.0 source (ab46419fcc99bcd34aa4d89f7b545d5d51694a88). Each full contrib run executes 279 tests: 278 passed, one failed, zero errors/skips/canceled/ignored/pending.
The same failure appears in both lanes:
DeltaScanContribSuite:
discovery harness: every credential/encryption-shaped fs.s3a.* key Hadoop's
Constants class declares is either compared by AllS3ConfigKeys or individually documented as exempt
HashSet("fs.s3a.encryption.context") was not empty
NativeScan (118), DML-decline (3) and local MinIO/S3 (3) pass; the 155-case admission suite contains the failure. Synthetic merge/clustering/hygiene workloads also pass 37 checks per lane with matching stock outputs, but that does not override the failed admission audit.
After the matching native/JVM build, the root-reactor selection is:
set -euo pipefail
./mvnw -Pspark-4.2,delta -Ddelta.artifact=delta-spark_4.2 \
-Ddelta.spark.version=4.4.0 test -Dtest=none \
-DwildcardSuites=org.apache.comet.contrib.delta
# Repeat with -Ddelta.spark.version=4.4.1.
Both artifact and version overrides matter. The source-matched packages in these runs reused the exact released AMD64 JNI; no native rebuild or current-main runtime is claimed. The actual failed-suite classpath has one Constants.class provider: hadoop-aws-3.5.0.jar (SHA256 66bd9eefb938b1a1657487324b63c13df2d8b17164a1dd24e0ef37b905bc5baa).
The inspected current-main discovery test and #7026 head also lack classification for this key. Hadoop sends KMS context on write requests, but resolves/parses it during initialization. Fifteen pure in-memory Hadoop 3.5 reference checks passed; malformed context raises IllegalArgumentException through S3AUtils.buildEncryptionSecrets with unset, AES256, SSE-KMS and DSSE-KMS algorithms. For example:
This is pairing-gate evidence, not a reproduced Comet read-admission discrepancy or AWS KMS-policy failure. A blanket exemption cannot be justified solely because GET/HEAD omit the header. The narrow follow-up is to agree this property's classification with the S3 gate owner, coordinate with #7026, preserve existing SSE-C/CSE declines, and rerun the nonempty contrib suites. I am keeping that follow-up separate from the private-expression feature requests; no existing assertion was bypassed.
fs.s3a.encryption.context is new in Hadoop 3.5.0; 3.4.1 and 3.4.2 don't declare it, so only the spark-4.2 profile reaches it. The pairing PR will classify it.
I plan to exempt it next to the CSE entries: the native Delta scan only reads, native code never reads the key, and Hadoop sends the context only on writes. For the malformed value you found, I'll add a test that it fails in S3A setup on the driver, before the native scan, so Comet fails where Spark does. If it doesn't, the key goes into AllS3ConfigKeys instead. The SSE-C and CSE declines stay, and I'll check it against #7026.
Activity
dwsmith1983 commentedon Nov 3, 2026
take
ErikBPF commentedon Nov 8, 2026
I reproduced the Spark 4.2 pairing with both Delta 4.4.0 and 4.4.1 on Comet 1.2.0 source (
ab46419fcc99bcd34aa4d89f7b545d5d51694a88). Each full contrib run executes 279 tests: 278 passed, one failed, zero errors/skips/canceled/ignored/pending.The same failure appears in both lanes:
NativeScan (118), DML-decline (3) and local MinIO/S3 (3) pass; the 155-case admission suite contains the failure. Synthetic merge/clustering/hygiene workloads also pass 37 checks per lane with matching stock outputs, but that does not override the failed admission audit.
After the matching native/JVM build, the root-reactor selection is:
Both artifact and version overrides matter. The source-matched packages in these runs reused the exact released AMD64 JNI; no native rebuild or current-main runtime is claimed. The actual failed-suite classpath has one
Constants.classprovider:hadoop-aws-3.5.0.jar(SHA25666bd9eefb938b1a1657487324b63c13df2d8b17164a1dd24e0ef37b905bc5baa).The inspected current-main discovery test and #7026 head also lack classification for this key. Hadoop sends KMS context on write requests, but resolves/parses it during initialization. Fifteen pure in-memory Hadoop 3.5 reference checks passed; malformed context raises
IllegalArgumentExceptionthroughS3AUtils.buildEncryptionSecretswith unset, AES256, SSE-KMS and DSSE-KMS algorithms. For example:Source: Hadoop encryption initialization, context resolution/parsing.
This is pairing-gate evidence, not a reproduced Comet read-admission discrepancy or AWS KMS-policy failure. A blanket exemption cannot be justified solely because GET/HEAD omit the header. The narrow follow-up is to agree this property's classification with the S3 gate owner, coordinate with #7026, preserve existing SSE-C/CSE declines, and rerun the nonempty contrib suites. I am keeping that follow-up separate from the private-expression feature requests; no existing assertion was bypassed.
dwsmith1983 commentedon Nov 9, 2026
fs.s3a.encryption.contextis new in Hadoop 3.5.0; 3.4.1 and 3.4.2 don't declare it, so only the spark-4.2 profile reaches it. The pairing PR will classify it.I plan to exempt it next to the CSE entries: the native Delta scan only reads, native code never reads the key, and Hadoop sends the context only on writes. For the malformed value you found, I'll add a test that it fails in S3A setup on the driver, before the native scan, so Comet fails where Spark does. If it doesn't, the key goes into
AllS3ConfigKeysinstead. The SSE-C and CSE declines stay, and I'll check it against #7026.