You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@kafka.apache.org by "Chris Egerton (Jira)" <ji...@apache.org> on 2022/09/20 14:25:00 UTC

[jira] [Created] (KAFKA-14244) Prevent unit/integration tests from terminating JVM

Chris Egerton created KAFKA-14244:
-------------------------------------

             Summary: Prevent unit/integration tests from terminating JVM
                 Key: KAFKA-14244
                 URL: https://issues.apache.org/jira/browse/KAFKA-14244
             Project: Kafka
          Issue Type: Improvement
          Components: unit tests
            Reporter: Chris Egerton
            Assignee: Chris Egerton


We've seen several cases of unit/integration tests invoking {{System::exit}} in the past, which terminates the CI build immediately and blocks us from collecting results for any not-yet-run tests.

In most cases, it's simple enough to use the appropriate wrapper class for calls to {{System::exit}} (which is available in both [Java|https://github.com/apache/kafka/blob/ff4c4d1365b189131a4f31b2dc49853f874c3ea5/clients/src/main/java/org/apache/kafka/common/utils/Exit.java] and [Scala|https://github.com/apache/kafka/blob/ff4c4d1365b189131a4f31b2dc49853f874c3ea5/core/src/main/scala/kafka/utils/Exit.scala]), but if the issue cannot be reproduced locally and instead only occurs during CI builds, it becomes difficult to identify exactly which test is causing the JVM to terminate.

In addition, there are some cases where, even though care is taken to use the correct wrapper class during testing, threads that are leaked during the test end up attempting to terminate the JVM after the wrapper class has been reset, which causes those attempts to actually succeed. See KAFKA-14242 for an example of one such test.

We can explore one or more of these potential improvements:
 * Always prevent calls to {{System::exit}} from succeeding during tests, both locally and in CI
 * Attempt to report which tests are responsible for invoking {{System::exit}} directly, so that they can be patched
 * Fail the build when {{System::exit}} is invoked by a test, in order to surface the issue (which can be either be indicative of poor testing logic, or a genuine bug) during CI builds



--
This message was sent by Atlassian Jira
(v8.20.10#820010)