|
@@ -31,6 +31,7 @@ import java.util.Map;
|
|
|
import java.util.concurrent.ExecutorService;
|
|
|
import java.util.Objects;
|
|
|
import java.util.concurrent.TimeUnit;
|
|
|
+import java.util.concurrent.atomic.AtomicBoolean;
|
|
|
|
|
|
import com.amazonaws.AmazonClientException;
|
|
|
import com.amazonaws.AmazonServiceException;
|
|
@@ -121,6 +122,7 @@ public class S3AFileSystem extends FileSystem {
|
|
|
private S3AStorageStatistics storageStatistics;
|
|
|
private long readAhead;
|
|
|
private S3AInputPolicy inputPolicy;
|
|
|
+ private final AtomicBoolean closed = new AtomicBoolean(false);
|
|
|
|
|
|
// The maximum number of entries that can be deleted in any call to s3
|
|
|
private static final int MAX_ENTRIES_TO_DELETE = 1000;
|
|
@@ -1414,7 +1416,11 @@ public class S3AFileSystem extends FileSystem {
|
|
|
* @throws IOException IO problem
|
|
|
*/
|
|
|
@Override
|
|
|
- public synchronized void close() throws IOException {
|
|
|
+ public void close() throws IOException {
|
|
|
+ if (closed.getAndSet(true)) {
|
|
|
+ // already closed
|
|
|
+ return;
|
|
|
+ }
|
|
|
try {
|
|
|
super.close();
|
|
|
} finally {
|