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)