Repository navigation
Fix pre-existing CI breakage: UB free, deprecated API, unpullable docker images - #117
Merged
Merged
Conversation
oversized_batch_does_not_deadlock_byte_sem freed batch.batch.rust_ptr by casting it to *mut Vec<u8>, but record_batch_to_c_ffi allocates it as Box<ArrowBatchInner> (two Arrow FFI structs) -- see iceberg_arrow_batch_free, which does the correct cast a few hundred lines away in table.rs. Dropping it as the wrong type is undefined behavior: it deallocates with a layout that doesn't match the real allocation. This was latent -- rustc 1.98.1 (CI's last known-good run) didn't catch it, but rustc 1.99.0 (CI's floating `stable` toolchain today) added a stricter allocator precondition check that now aborts on it with "NonNull::new_unchecked requires that the pointer is non-null". Not triggered by any functional change; any PR running CI today would hit it. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
check-version-bump requires a version bump whenever iceberg_rust_ffi's own source changes. Also replaces fetch_update with try_update in pipeline_stats.rs (unrelated to this PR's own changes, but the CI toolchain now deprecates it under -D warnings, breaking clippy/build for every PR against this repo). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
quay.io/minio/minio and quay.io/minio/mc (like their Docker Hub equivalents) are no longer pullable -- MinIO discontinued prebuilt community images -- which was failing setup_bucket with "unauthorized: access to the requested resource is not authorized" on every PR's test-julia jobs, unrelated to anything in this PR's own diff. Mirrors the same fix already applied in raicode's docker/iceberg compose stack: build minio and mc locally from MinIO's last published binary release (fetched from GitHub Releases, checksum-verified) instead of pulling a registry image. Verified locally: `docker compose up -d minio setup_bucket polaris init table-creation` brings up the full stack and table-creation completes successfully. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
robertbuessow
approved these changes
Oct 14, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Three unrelated CI/correctness fixes, split out of #116 so that PR stays focused on
assert_requirements:nested_pipeline.rs'soversized_batch_does_not_deadlock_byte_semtest freedbatch.batch.rust_ptrby casting it to*mut Vec<u8>, butrecord_batch_to_c_ffiallocates it asBox<ArrowBatchInner>(two Arrow FFI structs) -- seeiceberg_arrow_batch_freeintable.rs, which does the correct cast. Dropping it as the wrong type is undefined behavior. This was latent: CI's floatingstabletoolchain moved from rustc 1.98.1 (last known-good run, 2026-09-16) to 1.99.0 (2026-09-28), which added a stricter allocator precondition check that now catches it as aSIGABRT("NonNull::new_unchecked requires that the pointer is non-null"). Not triggered by any functional change -- any PR running CI today would hit it.pipeline_stats.rsusedAtomicU64::fetch_update, deprecated in favor oftry_update; under-D warningsthis now fails the build.quay.io/minio/minio/quay.io/minio/mcare no longer pullable (MinIO discontinued prebuilt community images), failingsetup_bucketwith "unauthorized" on every PR'stest-julia-*jobs. Builds them locally instead, from MinIO's last published binary release (mirrors the same fix already applied in raicode's own iceberg docker-compose stack).Test plan
cargo testiniceberg_rust_ffi-- 40 passed, 0 failed, includingoversized_batch_does_not_deadlock_byte_semdocker compose up -d minio setup_bucket polaris init table-creationbrings up the full stack locally;table-creationcompletes successfully🤖 Generated with Claude Code