Michael created FLINK-40387:
-------------------------------

             Summary: NativeS3 - configured retry/throttle backoff is ignored 
due to AWS SDK retry circuit breaker enabled by default - failing checkpoints 
under S3 503 throttling
                 Key: FLINK-40387
                 URL: https://issues.apache.org/jira/browse/FLINK-40387
             Project: Flink
          Issue Type: Bug
          Components: FileSystems
    Affects Versions: 2.3.0
            Reporter: Michael


h3. Environment
 * Flink 2.3.0 - flink-s3-fs-native-2.3.0.jar (AWS SDK retries 2.47.5)
 * Previously: Flink 2.2 - flink-s3-fs-hadoop-2.2.0.jar
 * ~1 TB RocksDB state, incremental checkpoints

h3. Problem
 * Pre-upgrade (S3A plugin): checkpoints succeeded ~99% of the time
 * Post-upgrade (native plugin): checkpoints fail most of the time on S3 
throttling:
{noformat}
S3Exception: Slow Down (Service: S3, Status Code: 503)
{noformat}

 * Entropy is enabled and load *is* spread across prefixes, so hot-prefixes are 
not the cause
 * Checkpoints fail in ~1–3s. With max-num-retries=20 and throttle backoff 
1s→60s, exhausting retries would take tens of seconds — so retries are being 
short-circuited, not exhausted.

h3. Root cause
 * *{{org.apache.flink.fs.s3native.S3ClientProvider}}* builds the SDK 
StandardRetryStrategy with maxAttempts + backoff but never sets 
circuitBreakerEnabled(false)
 * The breaker is on by default
 * During a ~1 TB incremental checkpoint, thousands of concurrent 
getFileStatus/headObject calls throttle at once, drain the shared token bucket, 
and the SDK stops retrying — regardless of configured backoff.
 * 
[https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/retry-strategy.html]

h3. Request
 # Add a config option (e.g. s3.retry.circuit-breaker.enabled) so retry/backoff 
is honored
 # Proposal: default it off for the checkpoint filesystem — restores S3A 
behavior (absorb throttling, keep retrying). At minimum, add the toggle.
[https://github.com/apache/flink/blob/0a2bad7b052538adecda1f68ba8b558c3aa8f097/flink-filesystems/flink-s3-fs-native/src/main/java/org/apache/flink/fs/s3native/S3ClientProvider.java#L662-L675]

h3. Stack trace
{noformat}
S3Exception: Slow Down (Status Code: 503, Request ID: 9F1GDSDKDKZH5MAM, ...)
    at ...DefaultS3Client.headObject(DefaultS3Client.java:8133)
    at o.a.f.f.s.NativeS3FileSystem.getFileStatus(NativeS3FileSystem.java:206)
{noformat}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to