Skip to content

Commit 5f079b9

Browse files
authored
GH-3205: Make HadoopPositionOutputStream.close() safe to call even if closed (#3206)
1 parent 3c33fab commit 5f079b9

File tree

1 file changed

+5
-0
lines changed

1 file changed

+5
-0
lines changed

parquet-hadoop/src/main/java/org/apache/parquet/hadoop/util/HadoopPositionOutputStream.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,13 @@
2020
package org.apache.parquet.hadoop.util;
2121

2222
import java.io.IOException;
23+
import java.util.concurrent.atomic.AtomicBoolean;
2324
import org.apache.hadoop.fs.FSDataOutputStream;
2425
import org.apache.parquet.io.PositionOutputStream;
2526

2627
public class HadoopPositionOutputStream extends PositionOutputStream {
2728
private final FSDataOutputStream wrapped;
29+
private final AtomicBoolean closed = new AtomicBoolean(false);
2830

2931
HadoopPositionOutputStream(FSDataOutputStream wrapped) {
3032
this.wrapped = wrapped;
@@ -61,6 +63,9 @@ public void flush() throws IOException {
6163

6264
@Override
6365
public void close() throws IOException {
66+
if (closed.getAndSet(true)) {
67+
return;
68+
}
6469
try (FSDataOutputStream fdos = wrapped) {
6570
fdos.flush();
6671
}

0 commit comments

Comments
 (0)