ClementTsang opened a new issue, #5545:
URL: https://github.com/apache/arrow-rs/issues/5545
**Which part is this question about**
<!--
Is it code base, library api, documentation or some other part?
-->
`object_store`
**Describe your question**
<!--
A clear and concise description of what the question is.
-->
We've been using `object_store`, and occasionally, we see logs like this
(some details omitted for brevity) when calling `put()`:
```
2024-03-20T14:22:18.239+00:00 ERROR
(src/rust/apps/flusher/src/upload_task.rs:50) - Error while trying to flush
file to object store: error resolving file 'file[...]': internal error
Caused by:
0: internal error
1: Generic S3 error: Error after 0 retries in 1.096125ms,
max_retries:10, retry_timeout:60s, source:error sending request for url
(https://s3.us-east-1.amazonaws.com/...): error writing a body to connection:
Broken pipe (os error 32)
2: Error after 0 retries in 1.096125ms, max_retries:10,
retry_timeout:60s, source:error sending request for url
(https://s3.us-east-1.amazonaws.com/...): error writing a body to connection:
Broken pipe (os error 32)
3: error sending request for url
(https://s3.us-east-1.amazonaws.com/...): error writing a body to connection:
Broken pipe (os error 32)
4: error writing a body to connection: Broken pipe (os error 32)
5: Broken pipe (os error 32)
...
```
This is despite having retries configured, so this was confusing to us why
it was saying 0 retries. Should this be something that gets retried?
**Additional context**
<!--
Add any other context about the problem here.
-->
This seems to be a similar issue to
https://github.com/apache/arrow-rs/issues/5106.
I've also done a bit of digging - this looks like it's a [hyper
error](https://docs.rs/hyper/0.14.28/src/hyper/error.rs.html#477) when there's
a `BodyWrite` error.
It looks like in `object_store` we check for hyper errors
[here](https://github.com/apache/arrow-rs/blob/master/object_store/src/client/retry.rs#L266),
but it looks like the `BodyWrite` error isn't checked. Unfortunately, I don't
think hyper exposes a public interface for this check at the moment.
For now what we've done is manually wrap the `put` with our own retry and
check for the error `Display` implementation, but that's pretty jury-rigged.
--
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]