sundapeng opened a new pull request, #9398:
URL: https://github.com/apache/paimon/pull/9398

   ### Purpose
   
   Deleting objects one request at a time is what dominates a format table 
overwrite commit on object
   storage, and OSS can delete up to 1000 keys of one bucket in a single 
request. This adds the
   capability and an OSS provider. The Format Table side that consumes it is a 
separate change.
   
   `FileIO.batchFileDeleter(Path)` returns an optional batch deleter for the 
provider serving that path.
   The default is empty and performs no storage access, so existing 
implementations keep working
   unchanged, and `PluginFileIO`, `ResolvingFileIO`, `CachingFileIO` and 
`RESTTokenFileIO` forward it.
   
   The contract is strict. An absent capability is the only signal that a 
caller may use individual
   deletes; once a batch request has started, a failure or an incomplete 
response fails the caller
   rather than deleting the remaining files one by one, which would hide a 
partial success. A caller
   that retries must resend the same complete batch. An implementation 
validates the whole request,
   bucket and authority included, before it touches a client.
   
   `OSSFileIO` implements it over `deleteObjects` with at most 1000 keys of one 
bucket per request, and
   verifies the per-object result against what was asked for.
   
   Jindo is the other provider that matters for this workload and it is not 
here: 6.9.1 has no batch
   API, and while 6.10.7 has one it is disabled by default with single failover 
on, so it needs its own
   change backed by runtime evidence.
   
   ### Tests
   
   `FileIOBatchDeleteContractTest` and `FileIOBatchDeleteForwardingTest` for 
the capability and the four
   wrappers, including discovery that performs no I/O, a plugin invocation 
restoring the context
   classloader, mixed authorities under `ResolvingFileIO`, rediscovery after a 
REST token refresh, and
   an immutable result.
   
   `OSSFileIOBatchDeleteTest` for the provider: batch size, bucket and 
authority validation before any
   client is obtained, and verbose response checking.
   
   ### API and Format
   
   `FileIO` gains one default method that returns empty and touches no storage. 
`BatchFileDeleter` and
   `BatchDeleteResult` are new public types. No file format change.
   
   ### Documentation
   
   None. This adds no option.
   


-- 
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]

Reply via email to