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
Partial-progress compaction can lose manifest-list encryption keys聽#17989
Concurrent partial-progress commits on an encrypted Hive table can commit a snapshot without the wrapped key for its manifest list. The rewrite reports failed groups and returns, but the snapshot's key is lost, leaving the table unreadable to users and seemingly lost. They see:
java.util.concurrent.ExecutionException: java.lang.NullPointerException:
Cannot invoke "org.apache.iceberg.encryption.EncryptedKey.encryptedKeyMetadata()"
because "manifestListKey" is null
Caused by: java.lang.NullPointerException
at org.apache.iceberg.encryption.EncryptionUtil.decryptManifestListKeyMetadata(...)
at org.apache.iceberg.BaseSnapshot.allManifests(...)
at org.apache.iceberg.FastAppend.apply(...)
at org.apache.iceberg.SnapshotProducer.commit(...)
Willingness to contribute
I can contribute a fix for this bug independently
I would be willing to contribute a fix for this bug with guidance from the Iceberg community
I cannot contribute a fix for this bug at this time
A couple notes: (went down a few routes investigating this, so wanted to track)
The root cause is that of Concurrent commits through one Table can lose manifest-list encryption keys聽#17990 - each rewrite worker writes with the encryption manager it captured, while a concurrent Hive refresh can "install" a different manager before metadata commit. The successful snapshot's manifest-list key is then present only in that original, "lost" manager, and so not committed.
Separately, I think that it's odd that partial progress runs commits concurrently, leading to excessive and unnecessary self-conflicts, retries, backoff etc. I have Core: Write rewrite manifests concurrently but commit one at a time聽#17986 for this which shows significant improvements when benchmarked.
Activity
smaheshwar-pltr commentedon Sep 7, 2026
Example reproduction below. It's a bit heavy; there may have been an easier repro here but couldn't find one easily.
smaheshwar-pltr commentedon Sep 7, 2026
A couple notes: (went down a few routes investigating this, so wanted to track)
Tablecan lose manifest-list encryption keys聽#17990 - each rewrite worker writes with the encryption manager it captured, while a concurrent Hive refresh can "install" a different manager before metadata commit. The successful snapshot's manifest-list key is then present only in that original, "lost" manager, and so not committed.smaheshwar-pltr commentedon Sep 24, 2026
Fixed by #17984