Skip to content

Commit 98fa7ea

Browse files
committed
NIFI-14472: Fix KubernetesConfigMapStateProviderTest flaky teardown on macOS
The test class was missing an @AfterEach to shut down the provider after each test. Tests that called provider.initialize() but not provider.shutdown() left the Kubernetes client's Netty event loop open. On macOS with Zulu JDK 21, the GC collected the event loop before KubernetesMockServerExtension.afterEach() ran, causing MockWebServer.await() to throw RejectedExecutionException: 'event executor terminated' Fix: add @AfterEach shutdownProvider() to guarantee the Kubernetes client is closed before the mock server extension tears down, ensuring deterministic cleanup across all platforms and JVM implementations. Co-authored-by: Rakesh Kumar Singh <rsky.rakesh@gmail.com>
1 parent 67c2d4c commit 98fa7ea

1 file changed

Lines changed: 6 additions & 0 deletions

File tree

  • nifi-framework-bundle/nifi-framework-extensions/nifi-framework-kubernetes-bundle/nifi-framework-kubernetes-state-provider/src/test/java/org/apache/nifi/kubernetes/state/provider

nifi-framework-bundle/nifi-framework-extensions/nifi-framework-kubernetes-bundle/nifi-framework-kubernetes-state-provider/src/test/java/org/apache/nifi/kubernetes/state/provider/KubernetesConfigMapStateProviderTest.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
import org.apache.nifi.parameter.ParameterLookup;
4040
import org.apache.nifi.util.MockProcessContext;
4141
import org.apache.nifi.util.MockValidationContext;
42+
import org.junit.jupiter.api.AfterEach;
4243
import org.junit.jupiter.api.BeforeEach;
4344
import org.junit.jupiter.api.Test;
4445
import org.junit.jupiter.api.extension.ExtendWith;
@@ -107,6 +108,11 @@ void setProvider() {
107108
provider = new MockKubernetesConfigMapStateProvider();
108109
}
109110

111+
@AfterEach
112+
void shutdownProvider() {
113+
provider.shutdown();
114+
}
115+
110116
@Test
111117
void testGetSupportedScopes() {
112118
final Scope[] supportedScopes = provider.getSupportedScopes();

0 commit comments

Comments
 (0)