diff --git a/sandbox/plugins/analytics-backend-datafusion/src/test/java/org/opensearch/be/datafusion/DataFusionNativeBridgeTests.java b/sandbox/plugins/analytics-backend-datafusion/src/test/java/org/opensearch/be/datafusion/DataFusionNativeBridgeTests.java index fa802dc74bb34..3ec318a4e2ae6 100644 --- a/sandbox/plugins/analytics-backend-datafusion/src/test/java/org/opensearch/be/datafusion/DataFusionNativeBridgeTests.java +++ b/sandbox/plugins/analytics-backend-datafusion/src/test/java/org/opensearch/be/datafusion/DataFusionNativeBridgeTests.java @@ -21,8 +21,13 @@ */ public class DataFusionNativeBridgeTests extends OpenSearchTestCase { + // Note: initTokioRuntimeManager uses OnceLock and can only be initialized once per JVM. + // Do NOT call shutdownTokioRuntimeManager() here — it permanently kills the shared + // executor and other test classes (DatafusionSearchExecEngineTests, etc.) will fail + // with "Worker gone" if they run after this class. + public void testRuntimeLifecycle() { - // Init tokio runtime + // Init tokio runtime (no-op if already initialized by another test class) NativeBridge.initTokioRuntimeManager(2); // Create global runtime with small memory pool @@ -35,9 +40,8 @@ public void testRuntimeLifecycle() { ); assertTrue("Runtime pointer should be non-zero", runtimePtr != 0); - // Clean up + // Clean up the per-test runtime only NativeBridge.closeGlobalRuntime(runtimePtr); - NativeBridge.shutdownTokioRuntimeManager(); } public void testReaderLifecycle() throws Exception { @@ -58,6 +62,5 @@ public void testReaderLifecycle() throws Exception { readerHandle.close(); NativeBridge.closeGlobalRuntime(runtimePtr); - NativeBridge.shutdownTokioRuntimeManager(); } } diff --git a/sandbox/plugins/analytics-backend-datafusion/src/test/java/org/opensearch/be/datafusion/DatafusionSearchExecEngineTests.java b/sandbox/plugins/analytics-backend-datafusion/src/test/java/org/opensearch/be/datafusion/DatafusionSearchExecEngineTests.java index 1d7a45071ab0e..7b85058d42fe0 100644 --- a/sandbox/plugins/analytics-backend-datafusion/src/test/java/org/opensearch/be/datafusion/DatafusionSearchExecEngineTests.java +++ b/sandbox/plugins/analytics-backend-datafusion/src/test/java/org/opensearch/be/datafusion/DatafusionSearchExecEngineTests.java @@ -8,7 +8,6 @@ package org.opensearch.be.datafusion; -import org.apache.lucene.tests.util.LuceneTestCase.AwaitsFix; import org.opensearch.analytics.backend.EngineResultBatch; import org.opensearch.analytics.backend.EngineResultStream; import org.opensearch.be.datafusion.nativelib.NativeBridge; @@ -26,7 +25,6 @@ * DatafusionReader → DatafusionContext → DatafusionSearchExecEngine → EngineResultStream → EngineResultBatch. * Uses sqlToSubstrait to generate plan bytes, then exercises the real plugin classes. */ -@AwaitsFix(bugUrl = "https://github.com/opensearch-project/OpenSearch/issues/21195") public class DatafusionSearchExecEngineTests extends OpenSearchTestCase { private ReaderHandle readerHandle;