quinnj opened a new pull request, #613: URL: https://github.com/apache/arrow-julia/pull/613
An Arrow cloud source built from a `CloudStore.Object` with an empty ETag could mix ranges from different versions of the same key. In both MinIO and Azurite, reading `abcd`, replacing the object with the same-size uppercase content, and reading the next range returned `EFGH` without an error. Resolve missing metadata once when constructing the source, verify that its size agrees with the supplied handle, and require a strong ETag before reading any ranges. The existing `If-Match` requests then reject a changed object even when it is replaced before the first read. Complete object handles need no extra metadata request. This PR targets `core-rewrite` and depends on #609. It uses the released CloudStore API and keeps compatibility with CloudStore 1.6; it does not depend on the newer range reader work in CloudStore main. Validation: - Reproduced mixed-version reads against signed MinIO and Azurite requests before the fix. - Metadata tests cover one-time resolution, size mismatch, empty objects, and missing, weak, or malformed ETags. - Replacement tests require HTTP 412 for a source that has already read a range and a source replaced before its first read, plus a fresh source that reads the replacement correctly. - All 57 focused extension checks pass on Julia 1.10.12 with CloudStore 1.6.0 / HTTP 1.11 and Julia 1.13.1 with CloudStore 1.8.0 / HTTP 2.8. - The full Arrow suite, including Aqua and the scan acceptance checks, passes on Julia 1.13.1 with four threads. The research, implementation, and tests were AI-driven with OpenAI Codex, including an independent agent review. Co-authored by Codex -- 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]
