This is an automated email from the ASF dual-hosted git repository.
gangwu 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 5f079b98e GH-3205: Make HadoopPositionOutputStream.close() safe to
call even if closed (#3206)
5f079b98e is described below
commit 5f079b98e63c814535e8709ab5c6fb672c2aedc5
Author: Dominic So <[email protected]>
AuthorDate: Sat May 10 11:18:44 2025 -0400
GH-3205: Make HadoopPositionOutputStream.close() safe to call even if
closed (#3206)
---
.../org/apache/parquet/hadoop/util/HadoopPositionOutputStream.java | 5 +++++
1 file changed, 5 insertions(+)
diff --git
a/parquet-hadoop/src/main/java/org/apache/parquet/hadoop/util/HadoopPositionOutputStream.java
b/parquet-hadoop/src/main/java/org/apache/parquet/hadoop/util/HadoopPositionOutputStream.java
index 6b7e0c10c..e14fae94e 100644
---
a/parquet-hadoop/src/main/java/org/apache/parquet/hadoop/util/HadoopPositionOutputStream.java
+++
b/parquet-hadoop/src/main/java/org/apache/parquet/hadoop/util/HadoopPositionOutputStream.java
@@ -20,11 +20,13 @@
package org.apache.parquet.hadoop.util;
import java.io.IOException;
+import java.util.concurrent.atomic.AtomicBoolean;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.parquet.io.PositionOutputStream;
public class HadoopPositionOutputStream extends PositionOutputStream {
private final FSDataOutputStream wrapped;
+ private final AtomicBoolean closed = new AtomicBoolean(false);
HadoopPositionOutputStream(FSDataOutputStream wrapped) {
this.wrapped = wrapped;
@@ -61,6 +63,9 @@ public class HadoopPositionOutputStream extends
PositionOutputStream {
@Override
public void close() throws IOException {
+ if (closed.getAndSet(true)) {
+ return;
+ }
try (FSDataOutputStream fdos = wrapped) {
fdos.flush();
}