Repository: parquet-mr Updated Branches: refs/heads/master 4b1ff8f4b -> e9928c94c
PARQUET-571: Fix potential leak in ParquetFileReader.close() If an exception occurs when closing the input stream `f`, the codecs will not be released. This may cause native memory leaks for some codecs. \cc @rdblue Author: Nezih Yigitbasi <[email protected]> Closes #338 from nezihyigitbasi/leak-fix and squashes the following commits: fcc5528 [Nezih Yigitbasi] Fix potential leak in close() Project: http://git-wip-us.apache.org/repos/asf/parquet-mr/repo Commit: http://git-wip-us.apache.org/repos/asf/parquet-mr/commit/e9928c94 Tree: http://git-wip-us.apache.org/repos/asf/parquet-mr/tree/e9928c94 Diff: http://git-wip-us.apache.org/repos/asf/parquet-mr/diff/e9928c94 Branch: refs/heads/master Commit: e9928c94ce1385ec72028336417f19f30ac38ac0 Parents: 4b1ff8f Author: Nezih Yigitbasi <[email protected]> Authored: Fri Mar 25 12:19:39 2016 -0700 Committer: Daniel Weeks <[email protected]> Committed: Fri Mar 25 12:19:39 2016 -0700 ---------------------------------------------------------------------- .../org/apache/parquet/hadoop/ParquetFileReader.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/parquet-mr/blob/e9928c94/parquet-hadoop/src/main/java/org/apache/parquet/hadoop/ParquetFileReader.java ---------------------------------------------------------------------- diff --git a/parquet-hadoop/src/main/java/org/apache/parquet/hadoop/ParquetFileReader.java b/parquet-hadoop/src/main/java/org/apache/parquet/hadoop/ParquetFileReader.java index 3d7b499..7ac1706 100644 --- a/parquet-hadoop/src/main/java/org/apache/parquet/hadoop/ParquetFileReader.java +++ b/parquet-hadoop/src/main/java/org/apache/parquet/hadoop/ParquetFileReader.java @@ -776,11 +776,14 @@ public class ParquetFileReader implements Closeable { @Override public void close() throws IOException { - if (f != null) { - f.close(); - } - if (codecFactory != null) { - codecFactory.release(); + try { + if (f != null) { + f.close(); + } + } finally { + if (codecFactory != null) { + codecFactory.release(); + } } }
