Skip to content

Commit 3b36197

Browse files
committed
Protect against Dataset double-close
1 parent 381f74b commit 3b36197

1 file changed

Lines changed: 4 additions & 2 deletions

File tree

java/cuvs-java/src/main/java22/com/nvidia/cuvs/internal/DatasetImpl.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,22 +18,24 @@
1818
import com.nvidia.cuvs.Dataset;
1919
import java.lang.foreign.Arena;
2020
import java.lang.foreign.MemorySegment;
21+
import java.util.concurrent.atomic.AtomicReference;
2122

2223
public class DatasetImpl implements Dataset {
23-
private final Arena arena;
24+
private final AtomicReference<Arena> arenaReference;
2425
private final MemorySegment seg;
2526
private final int size;
2627
private final int dimensions;
2728

2829
public DatasetImpl(Arena arena, MemorySegment memorySegment, int size, int dimensions) {
29-
this.arena = arena;
30+
this.arenaReference = new AtomicReference<>(arena);
3031
this.seg = memorySegment;
3132
this.size = size;
3233
this.dimensions = dimensions;
3334
}
3435

3536
@Override
3637
public void close() {
38+
var arena = arenaReference.getAndSet(null);
3739
if (arena != null) {
3840
arena.close();
3941
}

0 commit comments

Comments
 (0)