Repository navigation
Conversation
| * failed requests are not retried automatically; callers must retry and obtain a recovered | ||
| * filesystem through {@link S3FileIO}. | ||
| */ | ||
| class RecoverableS3AFileSystem extends S3AFileSystem { |
There was a problem hiding this comment.
Existing scheme test rejects the new subclass:
Introducing this subclass changes the runtime class name, but paimon-filesystems/paimon-s3/src/test/java/org/apache/paimon/s3/S3ASchemeTest.java:145 assertEquals("org.apache.hadoop.fs.s3a.S3AFileSystem", fs.getClass().getName()); still requires the exact name org.apache.hadoop.fs.s3a.S3AFileSystem. Both parameterized scheme cases consequently fail in the required JDK 8 and JDK 11 CI jobs. Please update that test to verify S3A ancestry/behavior without requiring the old concrete class name; note that this plugin test may use a separate classloader, so a simple cross-classloader instanceof may not be reliable.
There was a problem hiding this comment.
Thanks for pointing this out. I've updated S3ASchemeTest to verify the S3A superclass hierarchy by class name instead of asserting the exact runtime class name. This avoids relying on instanceof, which may be unreliable across isolated classloaders.
JingsongLi
left a comment
There was a problem hiding this comment.
Verified actual recovery on Hadoop 3.4.2 / AWS SDK 2.29.52 against a loopback endpoint. I closed the Apache transport, observed the first HEAD fail, then verified both S3FileIO instances converged on a replacement and the peer HEAD succeeded. All 12 cache tests passed. The inline comments cover two additional publication and retention reproductions.
d9c7823 to
b519d14
Compare
Purpose
Fixes #10711
S3FileIOmay continue reusing a cachedS3AFileSystemafter its underlying Apache HTTP connection pool has been shut down, causing subsequent S3 operations to fail withIllegalStateException: Connection pool shut down.Changes
Connection pool shut downfailures through an AWS SDK execution interceptor and mark the affected S3A filesystem as unusable.S3FileIOinstances with the same cache key to recover as well.Scope