[ https://issues.apache.org/jira/browse/IGNITE-18861?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Mikhail Pochatkin updated IGNITE-18861: --------------------------------------- Description: In test runs from CI founded follow stacktrace: {code:java} java.lang.NullPointerException at org.apache.ignite.internal.testframework.junit.DumpThreadsOnTimeout.isJunitMethodTimeout(DumpThreadsOnTimeout.java:68) at org.apache.ignite.internal.testframework.junit.DumpThreadsOnTimeout.handleThrowable(DumpThreadsOnTimeout.java:53) at org.apache.ignite.internal.testframework.junit.DumpThreadsOnTimeout.handleTestExecutionException(DumpThreadsOnTimeout.java:49) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestExecutionExceptionHandlers$8(TestMethodTestDescriptor.java:228) at org.junit.jupiter.engine.descriptor.JupiterTestDescriptor.invokeExecutionExceptionHandlers(JupiterTestDescriptor.java:123) at org.junit.jupiter.engine.descriptor.JupiterTestDescriptor.invokeExecutionExceptionHandlers(JupiterTestDescriptor.java:110) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestExecutionExceptionHandlers(TestMethodTestDescriptor.java:227) ... at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193) at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129) at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100) at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60) at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56) at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:133) at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:71) at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69) at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74) {code} In case any tests failed with TimeoutException *org.apache.ignite.internal.testframework.junit.DumpThreadsOnTimeout* tried to produce readable message but fail with *NPE * in case when Exception message is null. After this NPE JUnit thread die and *BeforeAll\BeforeEach* methods are not called. As result, we have unkilled AI3 live nodes which holded ports and next tests on the CI Agent where it failed cannot run correctly with reason *Caused by: java.lang.IllegalStateException: No available port in range [3344-3344]* was: In test runs from CI founded follow stacktrace: {code:java} java.lang.NullPointerException at org.apache.ignite.internal.testframework.junit.DumpThreadsOnTimeout.isJunitMethodTimeout(DumpThreadsOnTimeout.java:68) at org.apache.ignite.internal.testframework.junit.DumpThreadsOnTimeout.handleThrowable(DumpThreadsOnTimeout.java:53) at org.apache.ignite.internal.testframework.junit.DumpThreadsOnTimeout.handleTestExecutionException(DumpThreadsOnTimeout.java:49) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestExecutionExceptionHandlers$8(TestMethodTestDescriptor.java:228) at org.junit.jupiter.engine.descriptor.JupiterTestDescriptor.invokeExecutionExceptionHandlers(JupiterTestDescriptor.java:123) at org.junit.jupiter.engine.descriptor.JupiterTestDescriptor.invokeExecutionExceptionHandlers(JupiterTestDescriptor.java:110) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestExecutionExceptionHandlers(TestMethodTestDescriptor.java:227) ... at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193) at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129) at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100) at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60) at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56) at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:133) at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:71) at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69) at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74) {code} In case any tests failed with TimeoutException `org.apache.ignite.internal.testframework.junit.DumpThreadsOnTimeout` tried to produce readable message but fail with NPE in case when Exception message is null. After this NPE JUnit thread die and BeforeAll\BeforeEach methods are not called. As result, we have unkilled AI3 live nodes which holded ports and next tests on the CI Agent where it failed cannot run correctly with reason `Caused by: java.lang.IllegalStateException: No available port in range [3344-3344]` > NPE in DumpThreadsOnTimeout breaking resource cleanup > ----------------------------------------------------- > > Key: IGNITE-18861 > URL: https://issues.apache.org/jira/browse/IGNITE-18861 > Project: Ignite > Issue Type: Bug > Reporter: Mikhail Pochatkin > Priority: Major > Labels: ignite-3 > > In test runs from CI founded follow stacktrace: > {code:java} > java.lang.NullPointerException > at > org.apache.ignite.internal.testframework.junit.DumpThreadsOnTimeout.isJunitMethodTimeout(DumpThreadsOnTimeout.java:68) > at > org.apache.ignite.internal.testframework.junit.DumpThreadsOnTimeout.handleThrowable(DumpThreadsOnTimeout.java:53) > at > org.apache.ignite.internal.testframework.junit.DumpThreadsOnTimeout.handleTestExecutionException(DumpThreadsOnTimeout.java:49) > at > org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestExecutionExceptionHandlers$8(TestMethodTestDescriptor.java:228) > at > org.junit.jupiter.engine.descriptor.JupiterTestDescriptor.invokeExecutionExceptionHandlers(JupiterTestDescriptor.java:123) > at > org.junit.jupiter.engine.descriptor.JupiterTestDescriptor.invokeExecutionExceptionHandlers(JupiterTestDescriptor.java:110) > at > org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestExecutionExceptionHandlers(TestMethodTestDescriptor.java:227) > ... > at > org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193) > at > org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129) > at > org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100) > at > org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60) > at > org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56) > at > org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:133) > at > org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:71) > at > worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69) > at > worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74) > {code} > In case any tests failed with TimeoutException > *org.apache.ignite.internal.testframework.junit.DumpThreadsOnTimeout* tried > to produce readable message but fail with *NPE * in case when Exception > message is null. After this NPE JUnit thread die and *BeforeAll\BeforeEach* > methods are not called. As result, we have unkilled AI3 live nodes which > holded ports and next tests on the CI Agent where it failed cannot run > correctly with reason *Caused by: java.lang.IllegalStateException: No > available port in range [3344-3344]* -- This message was sent by Atlassian Jira (v8.20.10#820010)