giridher-art opened a new issue, #844:
URL: https://github.com/apache/arrow-rs-object-store/issues/844

   **Is your feature request related to a problem or challenge? Please describe 
what you are trying to do.**
   
   `HttpStore::put_opts` only supports `PutMode::Overwrite`. Using 
`PutMode::Create` or `PutMode::Update` returns `Error::NotImplemented`. Every 
other backend (`aws`, `azure`, `gcp`) already supports both, so `HttpStore` 
can't be used for optimistic-concurrency writes (e.g. create-if-absent, 
update-if-unchanged).
   
   **Describe the solution you'd like**
   
   Implement `PutMode::Create` and `PutMode::Update` for `HttpStore` using 
standard HTTP conditional headers:
   
   - `PutMode::Create` → `If-None-Match: *`
   - `PutMode::Update(v)` → `If-Match: "<v.e_tag>"`
   
   Map failures back to existing error types:
   - `Create` + `412` → `Error::AlreadyExists`
   - `Update` + `412` → `Error::Precondition`
   
   **Describe alternatives you've considered**
   
   Using the WebDAV `If` header (RFC 2518 §9.4) instead — not needed here since 
it's built for lock tokens, and `PutMode` only needs ETag-based conditions. 
Plain `If-Match`/`If-None-Match` is simpler and works on more generic HTTP 
servers.
   
   **Additional context**
   
   Not all servers honor conditional headers on PUT — this is optional server 
behavior. This change does not add WebDAV locking support.
   


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