PARQUET-1954: TCP connection leak in parquet dump (#849)
diff --git a/parquet-tools/src/main/java/org/apache/parquet/tools/command/DumpCommand.java b/parquet-tools/src/main/java/org/apache/parquet/tools/command/DumpCommand.java
index eaf6e8e..6ae31c5 100644
--- a/parquet-tools/src/main/java/org/apache/parquet/tools/command/DumpCommand.java
+++ b/parquet-tools/src/main/java/org/apache/parquet/tools/command/DumpCommand.java
@@ -163,50 +163,44 @@
}
}
- ParquetFileReader freader = null;
if (showmd) {
- try {
- long group = 0;
- for (BlockMetaData block : blocks) {
- if (group != 0) out.println();
- out.format("row group %d%n", group++);
- out.rule('-');
+ long group = 0;
+ for (BlockMetaData block : blocks) {
+ if (group != 0)
+ out.println();
+ out.format("row group %d%n", group++);
+ out.rule('-');
-
- List<ColumnChunkMetaData> ccmds = block.getColumns();
- if (showColumns != null) {
- ccmds = new ArrayList<ColumnChunkMetaData>();
- for (ColumnChunkMetaData ccmd : block.getColumns()) {
- String path = Joiner.on('.').skipNulls().join(ccmd.getPath().toArray());
- if (showColumns.contains(path)) {
- ccmds.add(ccmd);
- }
- }
- }
-
- MetadataUtils.showDetails(out, ccmds);
-
- List<BlockMetaData> rblocks = Collections.singletonList(block);
- freader = new ParquetFileReader(
- conf, meta.getFileMetaData(), inpath, rblocks, columns);
- PageReadStore store = freader.readNextRowGroup();
- while (store != null) {
- out.incrementTabLevel();
- for (ColumnDescriptor column : columns) {
- out.println();
- dump(out, store, column);
- }
- out.decrementTabLevel();
-
- store = freader.readNextRowGroup();
- }
- out.flushColumns();
+ List<ColumnChunkMetaData> ccmds = block.getColumns();
+ if (showColumns != null) {
+ ccmds = new ArrayList<ColumnChunkMetaData>();
+ for (ColumnChunkMetaData ccmd : block.getColumns()) {
+ String path = Joiner.on('.').skipNulls().join(ccmd.getPath().toArray());
+ if (showColumns.contains(path)) {
+ ccmds.add(ccmd);
}
- } finally {
- if (freader != null) {
- freader.close();
- }
+ }
}
+
+ MetadataUtils.showDetails(out, ccmds);
+
+ List<BlockMetaData> rblocks = Collections.singletonList(block);
+ try (ParquetFileReader freader = new ParquetFileReader(conf, meta.getFileMetaData(), inpath, rblocks,
+ columns)) {
+ PageReadStore store = freader.readNextRowGroup();
+ while (store != null) {
+ out.incrementTabLevel();
+ for (ColumnDescriptor column : columns) {
+ out.println();
+ dump(out, store, column);
+ }
+ out.decrementTabLevel();
+
+ store = freader.readNextRowGroup();
+ }
+ out.flushColumns();
+ }
+ }
}
if (showdt) {
@@ -221,25 +215,22 @@
long page = 1;
long total = blocks.size();
long offset = 1;
- freader = new ParquetFileReader(
- conf, meta.getFileMetaData(), inpath, blocks, Collections.singletonList(column));
- PageReadStore store = freader.readNextRowGroup();
- while (store != null) {
+ try(ParquetFileReader freader = new ParquetFileReader(
+ conf, meta.getFileMetaData(), inpath, blocks, Collections.singletonList(column))){
+ PageReadStore store = freader.readNextRowGroup();
+ while (store != null) {
ColumnReadStoreImpl crstore = new ColumnReadStoreImpl(
- store, new DumpGroupConverter(), schema,
- meta.getFileMetaData().getCreatedBy());
+ store, new DumpGroupConverter(), schema,
+ meta.getFileMetaData().getCreatedBy());
dump(out, crstore, column, page++, total, offset);
offset += store.getRowCount();
store = freader.readNextRowGroup();
+ }
}
-
out.flushColumns();
} finally {
out.flushColumns();
- if (freader != null) {
- freader.close();
- }
}
}
}