diff --git a/plugins/engine-datafusion/src/main/java/org/opensearch/datafusion/jni/handle/ReaderHandle.java b/plugins/engine-datafusion/src/main/java/org/opensearch/datafusion/jni/handle/ReaderHandle.java index 2df7a4b11bf70..dd1c93f74b7b0 100644 --- a/plugins/engine-datafusion/src/main/java/org/opensearch/datafusion/jni/handle/ReaderHandle.java +++ b/plugins/engine-datafusion/src/main/java/org/opensearch/datafusion/jni/handle/ReaderHandle.java @@ -11,17 +11,23 @@ import org.opensearch.datafusion.jni.NativeBridge; import org.opensearch.vectorized.execution.jni.RefCountedNativeHandle; +import java.io.Closeable; + /** * Reference-counted handle for native reader. */ public final class ReaderHandle extends RefCountedNativeHandle { - public ReaderHandle(String path, String[] files) { + private final Runnable onClose; + + public ReaderHandle(String path, String[] files, Runnable onClose) { super(NativeBridge.createDatafusionReader(path, files)); + this.onClose = onClose; } @Override protected void doClose() { NativeBridge.closeDatafusionReader(ptr); + onClose.run(); } } diff --git a/plugins/engine-datafusion/src/main/java/org/opensearch/datafusion/search/DatafusionReader.java b/plugins/engine-datafusion/src/main/java/org/opensearch/datafusion/search/DatafusionReader.java index 7f74e337155e6..ed3a3f15ddfce 100644 --- a/plugins/engine-datafusion/src/main/java/org/opensearch/datafusion/search/DatafusionReader.java +++ b/plugins/engine-datafusion/src/main/java/org/opensearch/datafusion/search/DatafusionReader.java @@ -55,7 +55,7 @@ public DatafusionReader(String directoryPath, CompositeEngine.ReleasableRef