The GitHub Actions job "GraphAr C++ CI Nightly" on incubator-graphar.git/main 
has failed.
Run started by GitHub user acezen (triggered by acezen).

Head commit for run:
dd17c9b9f0fface85fedb02dcad9ba83cd6e9228 / alex <[email protected]>
feat(java): add an optional S3 storage adapter (#966)

* feat(java): add an optional S3 storage adapter

S3 range reads and staged writes need to satisfy the storage API without 
leaking AWS dependencies into metadata or core modules.

Relates to #965.

Rejected: a mandatory S3 or Hadoop dependency in the storage API.

Not-tested: a real MinIO endpoint; the follow-up opt-in transport test remains 
separate.

* test(java): verify S3 storage against MinIO

Exercise staged conditional publication and range reads against an actual 
S3-compatible endpoint, while keeping the test opt-in for normal SDK 
verification.

Relates to #965.

* ci(java): build the SDK modules that the workflow already watches

The workflow triggers on storage-local, io-api and core but compiled only
storage-api, so every module merged after the storage API entered main
without being built or tested upstream. Add storage-s3 to the trigger paths
and list the shipped modules in SDK_MODULES.

* fix(java): reject an existing S3 object before staging bytes

create() deferred the existence check to the conditional publication, so a
caller could stream a whole object before learning about the conflict. Head
the object at open time to match the local adapter, and keep If-None-Match
as the atomic backstop when the head request cannot answer.

* style(java): use the canonical ASF header in the S3 input files

S3InputFile and S3SeekableInput carried a collapsed single-line header while
every other file in the SDK uses the multi-line form.

* ci(java): bind the javadoc step to a lifecycle phase

The step invoked javadoc:javadoc alone, so the reactor produced no jars and
a module resolved its siblings from the repository instead. With one module
in SDK_MODULES nothing was resolved across modules and the step passed; with
the shipped modules listed, storage-local could not find graphar-storage-api.
Run package in the same invocation so the reactor supplies the dependency.

* fix(java): let S3 failures keep their identity and stop paying a round trip 
per read

A head request that fails for any reason other than absence was read as
'object absent', so a permission or throttling error was deferred to close()
under a different message; only NoSuchKeyException and a 404 now mean absent.
A conditional put rejected with 412 lost the race for an existing object but
surfaced as a plain IOException, so callers could not tell a conflict from a
transient failure; it now surfaces as FileAlreadyExistsException, matching
both the eager check and the OutputFile.create() contract.

Reads were served by one GetObject range request per call, so byte-level
readers of columnar headers and footers paid a round trip each. The input now
keeps the last block in memory and serves subsequent reads from it, while a
read at least as large as the block bypasses the buffer.

Report URL: https://github.com/apache/incubator-graphar/actions/runs/34266689320

With regards,
GitHub Actions via GitBox


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to