You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@parquet.apache.org by fo...@apache.org on 2024/07/22 07:49:16 UTC
(parquet-java) branch master updated: GH-2935: Avoid double close of ParquetFileWriter (#2951)
This is an automated email from the ASF dual-hosted git repository.
fokko pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/parquet-java.git
The following commit(s) were added to refs/heads/master by this push:
new 824b7d009 GH-2935: Avoid double close of ParquetFileWriter (#2951)
824b7d009 is described below
commit 824b7d009eb41539cb0e2f73110efc0ac5694251
Author: hellishfire <st...@yahoo.com>
AuthorDate: Mon Jul 22 15:49:12 2024 +0800
GH-2935: Avoid double close of ParquetFileWriter (#2951)
* GH-2935: Avoid double close of ParquetFileWriter
* fix comment
---------
Co-authored-by: youming.whl <yo...@antfin.com>
---
.../src/main/java/org/apache/parquet/hadoop/ParquetFileWriter.java | 6 ++++++
.../test/java/org/apache/parquet/hadoop/TestParquetFileWriter.java | 3 +++
2 files changed, 9 insertions(+)
diff --git a/parquet-hadoop/src/main/java/org/apache/parquet/hadoop/ParquetFileWriter.java b/parquet-hadoop/src/main/java/org/apache/parquet/hadoop/ParquetFileWriter.java
index db15ba406..814b98c50 100644
--- a/parquet-hadoop/src/main/java/org/apache/parquet/hadoop/ParquetFileWriter.java
+++ b/parquet-hadoop/src/main/java/org/apache/parquet/hadoop/ParquetFileWriter.java
@@ -170,6 +170,7 @@ public class ParquetFileWriter implements AutoCloseable {
// set when end is called
private ParquetMetadata footer = null;
+ private boolean closed;
private final CRC32 crc;
private final ReusingByteBufferAllocator crcAllocator;
@@ -1658,11 +1659,16 @@ public class ParquetFileWriter implements AutoCloseable {
@Override
public void close() throws IOException {
+ if (closed) {
+ return;
+ }
try (PositionOutputStream temp = out) {
temp.flush();
if (crcAllocator != null) {
crcAllocator.close();
}
+ } finally {
+ closed = true;
}
}
diff --git a/parquet-hadoop/src/test/java/org/apache/parquet/hadoop/TestParquetFileWriter.java b/parquet-hadoop/src/test/java/org/apache/parquet/hadoop/TestParquetFileWriter.java
index 32e2eac0b..c6be72ff7 100644
--- a/parquet-hadoop/src/test/java/org/apache/parquet/hadoop/TestParquetFileWriter.java
+++ b/parquet-hadoop/src/test/java/org/apache/parquet/hadoop/TestParquetFileWriter.java
@@ -286,6 +286,9 @@ public class TestParquetFileWriter {
w.endColumn();
w.endBlock();
w.end(new HashMap<String, String>());
+ // Although writer is already closed in previous end(),
+ // explicitly close it again to verify double close behavior.
+ w.close();
ParquetMetadata readFooter = ParquetFileReader.readFooter(configuration, path);
assertEquals("footer: " + readFooter, 2, readFooter.getBlocks().size());