@Override
    public boolean test(AmazonS3Exception exception) {

        if (exception == null || exception.getErrorCode() == null ||
                exception.getErrorMessage() == null) {
            return false;
        }

        return exception.getErrorCode().contains(ERROR_CODE) &&
                exception.getErrorMessage().contains(RETYABLE_ERROR_MESSAGE);
    }
Complete Multipart Upload API returns a 2xx
success response with an Error xml in the body. Some of these errors
can be retried as per the API documentation {@see http://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadComplete.html}

This predicate analyzes the exception and returns true if the exception
can be retried.

<p/>
A sample success response with Error response Xml in body:
<p/>
HTTP/1.1 200 OK
x-amz-id-2: Uuag1LuByRx9e6j5Onimru9pO4ZVKnJ2Qz7/C1NPcfTWAtRPfTaOFg==
x-amz-request-id: 656c76696e6727732072657175657374
Date:  Mon, 1 Nov 2010 20:34:56 GMT
Connection: close
Server: AmazonS3

<?xml version="1.0" encoding="UTF-8"?>
<Error>
<Code>InternalError</Code>
<Message>We encountered an internal error. Please try again.</Message>
<RequestId>656c76696e6727732072657175657374</RequestId>
<HostId>Uuag1LuByRx9e6j5Onimru9pO4ZVKnJ2Qz7/C1NPcfTWAtRPfTaOFg==</HostId>
</Error>
aws-java-sdk-s3/src/main/java/com/amazonaws/services/s3/internal/CompleteMultipartUploadRetryablePredicate.java