bentsku commented on issue #6799: URL: https://github.com/apache/arrow-rs/issues/6799#issuecomment-2503803712
Awesome, I'm glad to hear that! Great, I think it is simpler that way, the multipart uploads are a bit tricky. And it does seem fine, yes! Also wanted to flag the fact that we do not really trigger `409` exception on `PutObject`, because right now the behavior is that we lock the object via a read/write lock, which allows us to check and prevent concurrent writes, and was easy to implement the following behavior for `IfNoneMatch`: > If multiple conditional writes occur for the same object name, the first write operation to finish succeeds. Amazon S3 then fails subsequent writes with a 412 Precondition Failed response. But it's going to be harder to implement for `IfMatch`: > You can also receive a 409 Conflict response in the case of concurrent requests. We'll just lock it and raise 412 if the provided `ETag` is not right. We'd need to implement semaphores and raise instant exception if multiple concurrent writers, only if `IfMatch` is provided, which is a bit out of scope, and I'm not too sure there's a concrete use-case except the retrying logic. As the locking seems to be working now (we've had issue before, which you greatly helped realize and fix thanks to your test suite, see #5283), I think I'll leave it as it is for now 😄 Anyway, just wanted to share the possible differences you might encounter. On another note, the `latest` image now contains the `IfMatch` feature, and will be released in `4.0.3` on Friday. Feel free to give it a try! I tried it myself with the #6802 branch, and tests are passing with the `AWS_CONDITIONAL_PUT=etag` and `AWS_COPY_IF_NOT_EXISTS=multipart` values set. -- 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]
