hadoop icon indicating copy to clipboard operation
hadoop copied to clipboard

HADOOP-18476. Abfs and S3A FileContext bindings to close wrapped filesystems in finalizer

Open steveloughran opened this issue 3 years ago • 5 comments

Not a fan of finalize, especially as FileContext delete on exit seems trouble. The class holds strong references so finalize() won't be called, ever.

Ignoring that, and avoiding something major like making everything closeable, the abfs and s3a bindings should close their wrapped FS in close.

How was this patch tested?

s3a tests: london, scale abfs: cardiff, scale

For code changes:

  • [X] Does the title or this PR starts with the corresponding JIRA issue id (e.g. 'HADOOP-17799. Your PR title ...')?
  • [X] Object storage: have the integration tests been executed and the endpoint declared according to the connector-specific documentation?
  • [ ] If adding new dependencies to the code, are these dependencies licensed in a way that is compatible for inclusion under ASF 2.0?
  • [ ] If applicable, have you updated the LICENSE, LICENSE-binary, NOTICE-binary files?

steveloughran avatar Oct 04 '22 15:10 steveloughran

  • @mehakmeet , @rajeshbalamohan @mukund-thakur

steveloughran avatar Oct 04 '22 15:10 steveloughran

:broken_heart: -1 overall

Vote Subsystem Runtime Logfile Comment
+0 :ok: reexec 1m 5s Docker mode activated.
_ Prechecks _
+1 :green_heart: dupname 0m 0s No case conflicting files found.
+0 :ok: codespell 0m 1s codespell was not available.
+0 :ok: detsecrets 0m 1s detect-secrets was not available.
+1 :green_heart: @author 0m 0s The patch does not contain any @author tags.
-1 :x: test4tests 0m 0s The patch doesn't appear to include any new or modified tests. Please justify why no new tests are needed for this patch. Also please list what manual steps were performed to verify this patch.
_ trunk Compile Tests _
+0 :ok: mvndep 15m 33s Maven dependency ordering for branch
+1 :green_heart: mvninstall 28m 45s trunk passed
+1 :green_heart: compile 3m 21s trunk passed with JDK Ubuntu-11.0.16+8-post-Ubuntu-0ubuntu120.04
+1 :green_heart: compile 2m 32s trunk passed with JDK Private Build-1.8.0_342-8u342-b07-0ubuntu1~20.04-b07
+1 :green_heart: checkstyle 0m 56s trunk passed
+1 :green_heart: mvnsite 1m 35s trunk passed
+1 :green_heart: javadoc 1m 10s trunk passed with JDK Ubuntu-11.0.16+8-post-Ubuntu-0ubuntu120.04
+1 :green_heart: javadoc 1m 12s trunk passed with JDK Private Build-1.8.0_342-8u342-b07-0ubuntu1~20.04-b07
+1 :green_heart: spotbugs 2m 31s trunk passed
+1 :green_heart: shadedclient 23m 23s branch has no errors when building and testing our client artifacts.
_ Patch Compile Tests _
+0 :ok: mvndep 0m 27s Maven dependency ordering for patch
+1 :green_heart: mvninstall 1m 9s the patch passed
+1 :green_heart: compile 3m 10s the patch passed with JDK Ubuntu-11.0.16+8-post-Ubuntu-0ubuntu120.04
-1 :x: javac 3m 10s /results-compile-javac-hadoop-tools-jdkUbuntu-11.0.16+8-post-Ubuntu-0ubuntu120.04.txt hadoop-tools-jdkUbuntu-11.0.16+8-post-Ubuntu-0ubuntu120.04 with JDK Ubuntu-11.0.16+8-post-Ubuntu-0ubuntu120.04 generated 6 new + 336 unchanged - 0 fixed = 342 total (was 336)
+1 :green_heart: compile 2m 20s the patch passed with JDK Private Build-1.8.0_342-8u342-b07-0ubuntu1~20.04-b07
+1 :green_heart: javac 2m 20s the patch passed
+1 :green_heart: blanks 0m 0s The patch has no blanks issues.
-0 :warning: checkstyle 0m 43s /results-checkstyle-hadoop-tools.txt hadoop-tools: The patch generated 1 new + 0 unchanged - 0 fixed = 1 total (was 0)
+1 :green_heart: mvnsite 1m 14s the patch passed
+1 :green_heart: javadoc 0m 47s the patch passed with JDK Ubuntu-11.0.16+8-post-Ubuntu-0ubuntu120.04
+1 :green_heart: javadoc 0m 54s the patch passed with JDK Private Build-1.8.0_342-8u342-b07-0ubuntu1~20.04-b07
+1 :green_heart: spotbugs 2m 21s the patch passed
+1 :green_heart: shadedclient 23m 19s patch has no errors when building and testing our client artifacts.
_ Other Tests _
+1 :green_heart: unit 2m 44s hadoop-aws in the patch passed.
+1 :green_heart: unit 2m 5s hadoop-azure in the patch passed.
+1 :green_heart: asflicense 0m 41s The patch does not generate ASF License warnings.
125m 59s
Subsystem Report/Notes
Docker ClientAPI=1.41 ServerAPI=1.41 base: https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-4966/1/artifact/out/Dockerfile
GITHUB PR https://github.com/apache/hadoop/pull/4966
Optional Tests dupname asflicense compile javac javadoc mvninstall mvnsite unit shadedclient spotbugs checkstyle codespell detsecrets
uname Linux f2fb462bd959 4.15.0-191-generic #202-Ubuntu SMP Thu Aug 4 01:49:29 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
Build tool maven
Personality dev-support/bin/hadoop.sh
git revision trunk / fd1aced2d3b7feb4e303bfd2023e735eb95d075c
Default Java Private Build-1.8.0_342-8u342-b07-0ubuntu1~20.04-b07
Multi-JDK versions /usr/lib/jvm/java-11-openjdk-amd64:Ubuntu-11.0.16+8-post-Ubuntu-0ubuntu120.04 /usr/lib/jvm/java-8-openjdk-amd64:Private Build-1.8.0_342-8u342-b07-0ubuntu1~20.04-b07
Test Results https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-4966/1/testReport/
Max. process+thread count 530 (vs. ulimit of 5500)
modules C: hadoop-tools/hadoop-aws hadoop-tools/hadoop-azure U: hadoop-tools
Console output https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-4966/1/console
versions git=2.25.1 maven=3.6.3 spotbugs=4.2.2
Powered by Apache Yetus 0.14.0 https://yetus.apache.org

This message was automatically generated.

hadoop-yetus avatar Oct 04 '22 17:10 hadoop-yetus

new warnings are of deprecation; no tests

steveloughran avatar Oct 05 '22 16:10 steveloughran

he class holds strong references so finalize() won't be called, ever. Are you referring to DELETE_ON_EXIT map?

Changes looks good. there is just one checkstyle reported.

mukund-thakur avatar Oct 10 '22 18:10 mukund-thakur

@mukund-thakur yes. once someone registers a deleteOnExit file, a strong ref to the FC is retained along with the list of files to delete. compare with the FS version, which is really "delete when close() is called"

steveloughran avatar Oct 11 '22 10:10 steveloughran

:broken_heart: -1 overall

Vote Subsystem Runtime Logfile Comment
+0 :ok: reexec 1m 22s Docker mode activated.
_ Prechecks _
+1 :green_heart: dupname 0m 0s No case conflicting files found.
+0 :ok: codespell 0m 1s codespell was not available.
+0 :ok: detsecrets 0m 1s detect-secrets was not available.
+1 :green_heart: @author 0m 0s The patch does not contain any @author tags.
-1 :x: test4tests 0m 0s The patch doesn't appear to include any new or modified tests. Please justify why no new tests are needed for this patch. Also please list what manual steps were performed to verify this patch.
_ trunk Compile Tests _
+0 :ok: mvndep 16m 31s Maven dependency ordering for branch
+1 :green_heart: mvninstall 32m 12s trunk passed
+1 :green_heart: compile 3m 52s trunk passed with JDK Ubuntu-11.0.16+8-post-Ubuntu-0ubuntu120.04
+1 :green_heart: compile 2m 58s trunk passed with JDK Private Build-1.8.0_342-8u342-b07-0ubuntu1~20.04-b07
+1 :green_heart: checkstyle 1m 9s trunk passed
+1 :green_heart: mvnsite 2m 3s trunk passed
+1 :green_heart: javadoc 1m 25s trunk passed with JDK Ubuntu-11.0.16+8-post-Ubuntu-0ubuntu120.04
+1 :green_heart: javadoc 1m 28s trunk passed with JDK Private Build-1.8.0_342-8u342-b07-0ubuntu1~20.04-b07
+1 :green_heart: spotbugs 2m 56s trunk passed
+1 :green_heart: shadedclient 27m 13s branch has no errors when building and testing our client artifacts.
_ Patch Compile Tests _
+0 :ok: mvndep 0m 27s Maven dependency ordering for patch
+1 :green_heart: mvninstall 1m 17s the patch passed
+1 :green_heart: compile 3m 25s the patch passed with JDK Ubuntu-11.0.16+8-post-Ubuntu-0ubuntu120.04
-1 :x: javac 3m 25s /results-compile-javac-hadoop-tools-jdkUbuntu-11.0.16+8-post-Ubuntu-0ubuntu120.04.txt hadoop-tools-jdkUbuntu-11.0.16+8-post-Ubuntu-0ubuntu120.04 with JDK Ubuntu-11.0.16+8-post-Ubuntu-0ubuntu120.04 generated 6 new + 326 unchanged - 0 fixed = 332 total (was 326)
+1 :green_heart: compile 2m 43s the patch passed with JDK Private Build-1.8.0_342-8u342-b07-0ubuntu1~20.04-b07
+1 :green_heart: javac 2m 43s the patch passed
+1 :green_heart: blanks 0m 0s The patch has no blanks issues.
+1 :green_heart: checkstyle 0m 44s the patch passed
+1 :green_heart: mvnsite 1m 27s the patch passed
+1 :green_heart: javadoc 0m 57s the patch passed with JDK Ubuntu-11.0.16+8-post-Ubuntu-0ubuntu120.04
+1 :green_heart: javadoc 1m 8s the patch passed with JDK Private Build-1.8.0_342-8u342-b07-0ubuntu1~20.04-b07
+1 :green_heart: spotbugs 2m 45s the patch passed
+1 :green_heart: shadedclient 26m 53s patch has no errors when building and testing our client artifacts.
_ Other Tests _
+1 :green_heart: unit 3m 3s hadoop-aws in the patch passed.
+1 :green_heart: unit 2m 18s hadoop-azure in the patch passed.
+1 :green_heart: asflicense 0m 52s The patch does not generate ASF License warnings.
143m 13s
Subsystem Report/Notes
Docker ClientAPI=1.41 ServerAPI=1.41 base: https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-4966/2/artifact/out/Dockerfile
GITHUB PR https://github.com/apache/hadoop/pull/4966
Optional Tests dupname asflicense compile javac javadoc mvninstall mvnsite unit shadedclient spotbugs checkstyle codespell detsecrets
uname Linux 8faa1f5d0681 4.15.0-191-generic #202-Ubuntu SMP Thu Aug 4 01:49:29 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
Build tool maven
Personality dev-support/bin/hadoop.sh
git revision trunk / 6eaf6fa1e150e031d83f25fd0452eff8d12b2fc7
Default Java Private Build-1.8.0_342-8u342-b07-0ubuntu1~20.04-b07
Multi-JDK versions /usr/lib/jvm/java-11-openjdk-amd64:Ubuntu-11.0.16+8-post-Ubuntu-0ubuntu120.04 /usr/lib/jvm/java-8-openjdk-amd64:Private Build-1.8.0_342-8u342-b07-0ubuntu1~20.04-b07
Test Results https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-4966/2/testReport/
Max. process+thread count 613 (vs. ulimit of 5500)
modules C: hadoop-tools/hadoop-aws hadoop-tools/hadoop-azure U: hadoop-tools
Console output https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-4966/2/console
versions git=2.25.1 maven=3.6.3 spotbugs=4.2.2
Powered by Apache Yetus 0.14.0 https://yetus.apache.org

This message was automatically generated.

hadoop-yetus avatar Oct 17 '22 19:10 hadoop-yetus

you know, the other thing to think of here is have finalize() methods in s3a/abfs, though they aren't ever encouraged

steveloughran avatar Oct 18 '22 13:10 steveloughran

you know, the other thing to think of here is have finalize() methods in s3a/abfs, though they aren't ever encouraged

You mean in the S3AFileSystem and ABFS right? Yes, I guess we can add but then there are close() methods already there.

mukund-thakur avatar Oct 18 '22 19:10 mukund-thakur