HADOOP-18476. Abfs and S3A FileContext bindings to close wrapped filesystems in finalizer (#4966)

This is to try and close the underlying filesystems when the FileContext APIs are used.
Without this, threads may be leaked
This commit is contained in:
Steve Loughran 2022-10-18 14:53:02 +01:00 committed by GitHub
parent ee886cacd7
commit d80db6c9e5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 29 additions and 2 deletions

View File

@ -33,10 +33,10 @@
*/ */
@InterfaceAudience.Public @InterfaceAudience.Public
@InterfaceStability.Evolving @InterfaceStability.Evolving
public class S3A extends DelegateToFileSystem{ public class S3A extends DelegateToFileSystem {
public S3A(URI theUri, Configuration conf) public S3A(URI theUri, Configuration conf)
throws IOException, URISyntaxException { throws IOException, URISyntaxException {
super(theUri, new S3AFileSystem(), conf, "s3a", false); super(theUri, new S3AFileSystem(), conf, "s3a", false);
} }
@ -54,4 +54,13 @@ public String toString() {
sb.append('}'); sb.append('}');
return sb.toString(); return sb.toString();
} }
/**
* Close the file system; the FileContext API doesn't have an explicit close.
*/
@Override
protected void finalize() throws Throwable {
fsImpl.close();
super.finalize();
}
} }

View File

@ -43,4 +43,13 @@ public class Abfs extends DelegateToFileSystem {
public int getUriDefaultPort() { public int getUriDefaultPort() {
return -1; return -1;
} }
/**
* Close the file system; the FileContext API doesn't have an explicit close.
*/
@Override
protected void finalize() throws Throwable {
fsImpl.close();
super.finalize();
}
} }

View File

@ -43,4 +43,13 @@ public class Abfss extends DelegateToFileSystem {
public int getUriDefaultPort() { public int getUriDefaultPort() {
return -1; return -1;
} }
/**
* Close the file system; the FileContext API doesn't have an explicit close.
*/
@Override
protected void finalize() throws Throwable {
fsImpl.close();
super.finalize();
}
} }