From 639c287cab4876f3b5951e5bcd7d4e940f16223f Mon Sep 17 00:00:00 2001 From: Bhavani Sudha Saktheeswaran Date: Wed, 13 Feb 2019 12:54:01 -0800 Subject: [PATCH] Close FSDataInputStream for meta file open in HoodiePartitionMetadata --- .../hoodie/common/model/HoodiePartitionMetadata.java | 9 +++++++-- .../java/com/uber/hoodie/hadoop/HoodieInputFormat.java | 3 ++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/hoodie-common/src/main/java/com/uber/hoodie/common/model/HoodiePartitionMetadata.java b/hoodie-common/src/main/java/com/uber/hoodie/common/model/HoodiePartitionMetadata.java index 960042a84..cfdcebe0a 100644 --- a/hoodie-common/src/main/java/com/uber/hoodie/common/model/HoodiePartitionMetadata.java +++ b/hoodie-common/src/main/java/com/uber/hoodie/common/model/HoodiePartitionMetadata.java @@ -120,14 +120,19 @@ public class HoodiePartitionMetadata { /** * Read out the metadata for this partition */ - public void readFromFS() { + public void readFromFS() throws IOException { + FSDataInputStream is = null; try { Path metaFile = new Path(partitionPath, HOODIE_PARTITION_METAFILE); - FSDataInputStream is = fs.open(metaFile); + is = fs.open(metaFile); props.load(is); } catch (IOException ioe) { throw new HoodieException("Error reading Hoodie partition metadata for " + partitionPath, ioe); + } finally { + if (is != null) { + is.close(); + } } } diff --git a/hoodie-hadoop-mr/src/main/java/com/uber/hoodie/hadoop/HoodieInputFormat.java b/hoodie-hadoop-mr/src/main/java/com/uber/hoodie/hadoop/HoodieInputFormat.java index c7931b5ce..b8abff224 100644 --- a/hoodie-hadoop-mr/src/main/java/com/uber/hoodie/hadoop/HoodieInputFormat.java +++ b/hoodie-hadoop-mr/src/main/java/com/uber/hoodie/hadoop/HoodieInputFormat.java @@ -206,7 +206,8 @@ public class HoodieInputFormat extends MapredParquetInputFormat implements Confi * Read the table metadata from a data path. This assumes certain hierarchy of files which should * be changed once a better way is figured out to pass in the hoodie meta directory */ - protected static HoodieTableMetaClient getTableMetaClient(FileSystem fs, Path dataPath) { + protected static HoodieTableMetaClient getTableMetaClient(FileSystem fs, Path dataPath) + throws IOException { int levels = HoodieHiveUtil.DEFAULT_LEVELS_TO_BASEPATH; if (HoodiePartitionMetadata.hasPartitionMetadata(fs, dataPath)) { HoodiePartitionMetadata metadata = new HoodiePartitionMetadata(fs, dataPath);