Zouxxyy opened a new pull request, #18023: URL: https://github.com/apache/iceberg/pull/18023
Nested equality-delete rows retain `InternalRecordWrapper` copies that share mutable nested converters. Distinct nested keys with equal hashes can collapse into one entry in `StructLikeSet`, and concurrent readers of cached rows can observe overwritten nested values. Materialize the converted structs with `StructLikeUtil.copy` before caching them. Keep `Record.copy()` to preserve ownership of the decoded record values. Validation with JDK 17 and Gradle 8.14.4: - All 12 new regression cases fail on the base commit and pass with this change. They cover hash collisions, stable nested keys, concurrent readers, nulls, date/timestamp/binary values, Avro/Parquet/ORC, and caching enabled/disabled. - `gradle -DsparkVersions= -DflinkVersions= :iceberg-data:test --tests org.apache.iceberg.data.TestBaseDeleteLoader --tests org.apache.iceberg.data.TestGenericReaderDeletes --tests org.apache.iceberg.data.TestGenericRecord`: 59 passed, 1 skipped. - `:iceberg-data:spotlessCheck` passed. --- **AI Disclosure** - Model: gpt-6 - Platform/Tool: OpenAI Codex - Human Oversight: unreviewed - Prompt Summary: Fix shared mutable nested equality-delete keys and add regression tests for hash collisions and concurrent cache access. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
