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();
     }

Reply via email to