Ben Kietzman created ARROW-8310:
-----------------------------------

             Summary: [C++] Minio's exceptions not recognized by 
IsConnectError()
                 Key: ARROW-8310
                 URL: https://issues.apache.org/jira/browse/ARROW-8310
             Project: Apache Arrow
          Issue Type: Bug
          Components: C++
    Affects Versions: 0.16.0
            Reporter: Ben Kietzman
             Fix For: 1.0.0


Minio emits an {{XMinioServerNotInitialized}} exception on failure to connect, 
which is recognized by {{ConnectRetryStrategy}} and used to trigger a retry 
instead of an error. This exception has an HTTP error 503.

However this code does not round trip through the AWS SDK, which maintains an 
explicit [mapping from known exception names to error 
codes|https://github.com/aws/aws-sdk-cpp/blob/d36c2b16c9c3caf81524ebfff1e70782b8e1a006/aws-cpp-sdk-core/source/client/CoreErrors.cpp#L37]
 and will demote an unrecognized exception name [to 
{{CoreErrors::UNKNOWN}}|https://github.com/aws/aws-sdk-cpp/blob/master/aws-cpp-sdk-core/source/client/AWSErrorMarshaller.cpp#L150]

The end result is flakiness in the test (and therefore CI) since 
{{ConnectRetryStrategy}} never gets a chance to operate, see for example 
https://github.com/apache/arrow/pull/6789/checks?check_run_id=552871444#step:6:1778

Probably {{IsConnectError}} will need to examine the error string in the event 
of {{CoreErrors::UNKNOWN}}.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to