Skip to content

[Storage][Blob] Test Arrow 17.0.0 for Java 8 compatibility#49615

Closed
browndav-msft wants to merge 47 commits into
Azure:feature/storage/stg104basefrom
browndav-msft:browndav-arrow-17-java8-test
Closed

[Storage][Blob] Test Arrow 17.0.0 for Java 8 compatibility#49615
browndav-msft wants to merge 47 commits into
Azure:feature/storage/stg104basefrom
browndav-msft:browndav-arrow-17-java8-test

Conversation

@browndav-msft

Copy link
Copy Markdown
Member

Summary\n- Downgrade Arrow dependencies used by azure-storage-blob from 18.1.0 to 17.0.0\n- Update versioning metadata and parent allowlist entry accordingly\n\n## Why\n- Validate whether Arrow 17.0.0 avoids Java 8 bytecode incompatibility seen with Arrow 18.1.0\n\n## Validation intent\n- Let CI run Java 8 compile/install and blob test matrix for this version set\n\n## Notes\n- This PR is for compatibility validation.

browndav-msft and others added 30 commits June 3, 2026 13:58
Apache Arrow uses off-heap memory via DirectByteBuffer and needs reflective access to internal NIO classes (like sun.misc.Unsafe or
  DirectByteBuffer.cleaner()) for memory management. Without this flag, you'll get InaccessibleObjectException at runtime.
- Add ArrowBlobListDeserializer that parses Arrow IPC streams into
  BlobItemInternal objects with safe null-checking helpers
- Add diagnostic test to verify Arrow schema from live service
- Add deserializer test to validate end-to-end parsing of Arrow response
- Add Arrow module requires to module-info.java
- Add checker-qual dependency for Arrow annotation compatibility
- Add --add-opens java.base/java.nio=ALL-UNNAMED for Arrow memory
- Needed to update the README based on the following: adding custom endpoints (the Arrow variants) that deviate from the standard pattern — the swagger defines them as pageable (likely copied from the original list blobs operations), but the response format doesn't match what autorest expects for pageable ops. So the directive is needed to patch the swaggeat codegen time.
- This is a common pattern in the Azure SDK — the README.md swagger config files are full of directive blocks that fixup mismatches between what the swagger says and what the generated code actually needs. It's the standard escape hatch when the swagger doesn't perfectly represent the desired codegen behavior.
…ords, and async client

Add 6 missing schema field mappings to ArrowBlobListDeserializer (Content-CRC64,
Encrypted, OrsPolicySourceBlob, AffinityId, SmartAccessTier, Tags) with supporting
model fields and public delegates. Expose NumberOfRecords from Arrow schema metadata.
Wire Arrow path into BlobContainerAsyncClient for both flat and hierarchy listings
with XML content-type fallback. Add listBlobsArrowWithTags integration test.
Mirror the sync Arrow ListBlobs tests from ContainerApiTests.java into
ContainerAsyncApiTests.java so CI exercises both code paths.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
… reader

Swap the official arrow-vector based parser for a self-contained BlobListArrowStreamReader plus internally-implemented column/batch data structures (Batch, Column, StringColumn, IntColumn, BoolColumn, TimestampColumn, MapColumn). The reader decodes the ListBlobs Arrow IPC stream using only the arrow-format flatbuffer definitions.

Dependency footprint: arrow-format becomes the sole compile-scoped Arrow dependency; arrow-vector / arrow-memory-core / arrow-memory-unsafe / checker-qual move to test scope (they back the parity test that validates the custom reader against the official Arrow writer); module-info drops requires for org.apache.arrow.vector and org.apache.arrow.memory.core, keeping org.apache.arrow.format.
…ffers to azure-client-sdk-parent and azure-storage-blob xml files
@github-actions github-actions Bot added Azure.Core azure-core Storage Storage Service (Queues, Blobs, Files) labels Jun 23, 2026
@browndav-msft browndav-msft changed the base branch from main to feature/storage/stg104base June 23, 2026 23:19
@browndav-msft browndav-msft force-pushed the browndav-arrow-17-java8-test branch from 395d4a4 to 71762ab Compare June 23, 2026 23:47
@browndav-msft browndav-msft reopened this Jun 23, 2026
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@browndav-msft browndav-msft force-pushed the browndav-arrow-17-java8-test branch from c960db2 to 34bd87d Compare June 24, 2026 15:07
@browndav-msft browndav-msft force-pushed the browndav-arrow-17-java8-test branch from c966f01 to 9cb3236 Compare June 24, 2026 16:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Azure.Core azure-core Storage Storage Service (Queues, Blobs, Files)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants