You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@parquet.apache.org by bl...@apache.org on 2018/08/07 16:35:40 UTC

[parquet-mr] branch master updated: PARQUET-1368: ParquetFileReader should close its input stream for the failure in constructor (#510)

This is an automated email from the ASF dual-hosted git repository.

blue pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/parquet-mr.git


The following commit(s) were added to refs/heads/master by this push:
     new 45e3ce5  PARQUET-1368: ParquetFileReader should close its input stream for the failure in constructor (#510)
45e3ce5 is described below

commit 45e3ce5fd218e4f7ec645c3f2947aa2459fe9c7b
Author: Hyukjin Kwon <gu...@gmail.com>
AuthorDate: Wed Aug 8 00:35:38 2018 +0800

    PARQUET-1368: ParquetFileReader should close its input stream for the failure in constructor (#510)
---
 .../main/java/org/apache/parquet/hadoop/ParquetFileReader.java   | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

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 95aaec4..15fe592 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
@@ -686,7 +686,14 @@ public class ParquetFileReader implements Closeable {
     this.file = file;
     this.f = file.newStream();
     this.options = options;
-    this.footer = readFooter(file, options, f, converter);
+    try {
+      this.footer = readFooter(file, options, f, converter);
+    } catch (Exception e) {
+      // In case that reading footer throws an exception in the constructor, the new stream
+      // should be closed. Otherwise, there's no way to close this outside.
+      f.close();
+      throw e;
+    }
     this.fileMetaData = footer.getFileMetaData();
     this.blocks = filterRowGroups(footer.getBlocks());
     for (ColumnDescriptor col : footer.getFileMetaData().getSchema().getColumns()) {