From 920d33926c8121a91d23f49a0b79dd97d40ddeb9 Mon Sep 17 00:00:00 2001 From: narges Date: Wed, 19 May 2021 11:16:09 -0700 Subject: [PATCH 1/3] possible resource leak in InMemoryAliasMap --- .../hadoop/hdfs/server/aliasmap/InMemoryAliasMap.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/aliasmap/InMemoryAliasMap.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/aliasmap/InMemoryAliasMap.java index bcf535740d152..227f653e8579b 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/aliasmap/InMemoryAliasMap.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/aliasmap/InMemoryAliasMap.java @@ -330,10 +330,13 @@ private static File getCompressedAliasMap(File aliasMapDir) tOut = new TarArchiveOutputStream(gzOut); addFileToTarGzRecursively(tOut, aliasMapDir, "", new Configuration()); } finally { - if (tOut != null) { - tOut.finish(); + try { + if (tOut != null) { + tOut.finish(); + } + } finally { + IOUtils.cleanupWithLogger(null, tOut, gzOut, bOut); } - IOUtils.cleanupWithLogger(null, tOut, gzOut, bOut); } return outCompressedFile; } From d0d81d605cadde6dd7ecc0813e2a929e31d22f97 Mon Sep 17 00:00:00 2001 From: narges Date: Sun, 23 May 2021 15:41:27 -0700 Subject: [PATCH 2/3] use try-with-resources --- .../server/aliasmap/InMemoryAliasMap.java | 24 +++++++------------ 1 file changed, 9 insertions(+), 15 deletions(-) diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/aliasmap/InMemoryAliasMap.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/aliasmap/InMemoryAliasMap.java index 227f653e8579b..c21d3e64bea99 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/aliasmap/InMemoryAliasMap.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/aliasmap/InMemoryAliasMap.java @@ -320,24 +320,18 @@ static File createSnapshot(InMemoryAliasMap aliasMap) throws IOException { private static File getCompressedAliasMap(File aliasMapDir) throws IOException { File outCompressedFile = new File(aliasMapDir.getParent(), TAR_NAME); - BufferedOutputStream bOut = null; - GzipCompressorOutputStream gzOut = null; - TarArchiveOutputStream tOut = null; - try { - bOut = new BufferedOutputStream( - Files.newOutputStream(outCompressedFile.toPath())); - gzOut = new GzipCompressorOutputStream(bOut); - tOut = new TarArchiveOutputStream(gzOut); + + try (BufferedOutputStream bOut = new BufferedOutputStream( + Files.newOutputStream(outCompressedFile.toPath())); + GzipCompressorOutputStream gzOut = new GzipCompressorOutputStream(bOut); + TarArchiveOutputStream tOut = new TarArchiveOutputStream(gzOut)){ + addFileToTarGzRecursively(tOut, aliasMapDir, "", new Configuration()); - } finally { - try { - if (tOut != null) { - tOut.finish(); - } - } finally { - IOUtils.cleanupWithLogger(null, tOut, gzOut, bOut); + if (tOut != null) { + tOut.finish(); } } + return outCompressedFile; } From 6a74dd93fac1433b4a968e59b98eb0596de6666a Mon Sep 17 00:00:00 2001 From: narges Date: Mon, 24 May 2021 09:46:31 -0700 Subject: [PATCH 3/3] remove tOut.finish() --- .../apache/hadoop/hdfs/server/aliasmap/InMemoryAliasMap.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/aliasmap/InMemoryAliasMap.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/aliasmap/InMemoryAliasMap.java index c21d3e64bea99..4060b78208509 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/aliasmap/InMemoryAliasMap.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/aliasmap/InMemoryAliasMap.java @@ -327,9 +327,6 @@ private static File getCompressedAliasMap(File aliasMapDir) TarArchiveOutputStream tOut = new TarArchiveOutputStream(gzOut)){ addFileToTarGzRecursively(tOut, aliasMapDir, "", new Configuration()); - if (tOut != null) { - tOut.finish(); - } } return outCompressedFile;