diff --git a/checkstyle/checkstyle.xml b/checkstyle/checkstyle.xml
index 13cfdb82bd0..91045adc608 100644
--- a/checkstyle/checkstyle.xml
+++ b/checkstyle/checkstyle.xml
@@ -103,6 +103,14 @@
+
+
+
+
+
+
+
+
diff --git a/checkstyle/suppressions.xml b/checkstyle/suppressions.xml
index f6bafbfcfe5..57cf0798137 100644
--- a/checkstyle/suppressions.xml
+++ b/checkstyle/suppressions.xml
@@ -17,8 +17,12 @@
files="(ApiMessageType).java|MessageDataGenerator.java"/>
+
+
-
+
@@ -167,7 +171,7 @@
-
+
@@ -195,16 +199,19 @@
-
+
+
+
+
-
+
+
{
+ throw new AssertionError("Test called exit(). code:" + statusCode + " message:" + message);
+ });
+ Exit.setHaltProcedure((statusCode, message) -> {
+ throw new AssertionError("Test called halt(). code:" + statusCode + " message:" + message);
+ });
int numClientsCreated = 0;
final ArrayList clients = new ArrayList<>();
diff --git a/streams/src/test/java/org/apache/kafka/streams/tests/BrokerCompatibilityTest.java b/streams/src/test/java/org/apache/kafka/streams/tests/BrokerCompatibilityTest.java
index 5b8e48eb8c7..961d76e2d69 100644
--- a/streams/src/test/java/org/apache/kafka/streams/tests/BrokerCompatibilityTest.java
+++ b/streams/src/test/java/org/apache/kafka/streams/tests/BrokerCompatibilityTest.java
@@ -28,6 +28,7 @@ import org.apache.kafka.common.serialization.Serde;
import org.apache.kafka.common.serialization.Serdes;
import org.apache.kafka.common.serialization.StringDeserializer;
import org.apache.kafka.common.serialization.StringSerializer;
+import org.apache.kafka.common.utils.Exit;
import org.apache.kafka.common.utils.Utils;
import org.apache.kafka.streams.KafkaStreams;
import org.apache.kafka.streams.StreamsBuilder;
@@ -49,7 +50,7 @@ public class BrokerCompatibilityTest {
public static void main(final String[] args) throws IOException {
if (args.length < 2) {
System.err.println("BrokerCompatibilityTest are expecting two parameters: propFile, processingMode; but only see " + args.length + " parameter");
- System.exit(1);
+ Exit.exit(1);
}
System.out.println("StreamsTest instance started");
@@ -62,7 +63,7 @@ public class BrokerCompatibilityTest {
if (kafka == null) {
System.err.println("No bootstrap kafka servers specified in " + StreamsConfig.BOOTSTRAP_SERVERS_CONFIG);
- System.exit(1);
+ Exit.exit(1);
}
streamsProperties.put(StreamsConfig.APPLICATION_ID_CONFIG, "kafka-streams-system-test-broker-compatibility");
diff --git a/streams/src/test/java/org/apache/kafka/streams/tests/StreamsBrokerDownResilienceTest.java b/streams/src/test/java/org/apache/kafka/streams/tests/StreamsBrokerDownResilienceTest.java
index 5b879f7c0b5..c1fef626454 100644
--- a/streams/src/test/java/org/apache/kafka/streams/tests/StreamsBrokerDownResilienceTest.java
+++ b/streams/src/test/java/org/apache/kafka/streams/tests/StreamsBrokerDownResilienceTest.java
@@ -49,7 +49,7 @@ public class StreamsBrokerDownResilienceTest {
public static void main(final String[] args) throws IOException {
if (args.length < 2) {
System.err.println("StreamsBrokerDownResilienceTest are expecting two parameters: propFile, additionalConfigs; but only see " + args.length + " parameter");
- System.exit(1);
+ Exit.exit(1);
}
System.out.println("StreamsTest instance started");
@@ -62,7 +62,7 @@ public class StreamsBrokerDownResilienceTest {
if (kafka == null) {
System.err.println("No bootstrap kafka servers specified in " + StreamsConfig.BOOTSTRAP_SERVERS_CONFIG);
- System.exit(1);
+ Exit.exit(1);
}
streamsProperties.put(StreamsConfig.APPLICATION_ID_CONFIG, "kafka-streams-resilience");
@@ -86,7 +86,7 @@ public class StreamsBrokerDownResilienceTest {
StreamsConfig.producerPrefix(ProducerConfig.REQUEST_TIMEOUT_MS_CONFIG),
StreamsConfig.producerPrefix(ProducerConfig.MAX_BLOCK_MS_CONFIG)));
- System.exit(1);
+ Exit.exit(1);
}
final StreamsBuilder builder = new StreamsBuilder();
diff --git a/streams/src/test/java/org/apache/kafka/streams/tests/StreamsEosTest.java b/streams/src/test/java/org/apache/kafka/streams/tests/StreamsEosTest.java
index 52af996edaa..aa195d09c28 100644
--- a/streams/src/test/java/org/apache/kafka/streams/tests/StreamsEosTest.java
+++ b/streams/src/test/java/org/apache/kafka/streams/tests/StreamsEosTest.java
@@ -16,6 +16,7 @@
*/
package org.apache.kafka.streams.tests;
+import org.apache.kafka.common.utils.Exit;
import org.apache.kafka.common.utils.Utils;
import org.apache.kafka.streams.StreamsConfig;
@@ -31,7 +32,7 @@ public class StreamsEosTest {
public static void main(final String[] args) throws IOException {
if (args.length < 2) {
System.err.println("StreamsEosTest are expecting two parameters: propFile, command; but only see " + args.length + " parameter");
- System.exit(1);
+ Exit.exit(1);
}
final String propFileName = args[0];
@@ -43,7 +44,7 @@ public class StreamsEosTest {
if (kafka == null) {
System.err.println("No bootstrap kafka servers specified in " + StreamsConfig.BOOTSTRAP_SERVERS_CONFIG);
- System.exit(1);
+ Exit.exit(1);
}
if ("process".equals(command) || "process-complex".equals(command)) {
@@ -51,7 +52,7 @@ public class StreamsEosTest {
!StreamsConfig.EXACTLY_ONCE_BETA.equals(processingGuarantee)) {
System.err.println("processingGuarantee must be either " + StreamsConfig.EXACTLY_ONCE + " or " + StreamsConfig.EXACTLY_ONCE_BETA);
- System.exit(1);
+ Exit.exit(1);
}
}
@@ -62,7 +63,7 @@ public class StreamsEosTest {
System.out.flush();
if (command == null || propFileName == null) {
- System.exit(-1);
+ Exit.exit(-1);
}
switch (command) {
@@ -84,7 +85,7 @@ public class StreamsEosTest {
default:
System.out.println("unknown command: " + command);
System.out.flush();
- System.exit(-1);
+ Exit.exit(-1);
}
}
diff --git a/streams/src/test/java/org/apache/kafka/streams/tests/StreamsSmokeTest.java b/streams/src/test/java/org/apache/kafka/streams/tests/StreamsSmokeTest.java
index 933fb7d8909..1b425c50739 100644
--- a/streams/src/test/java/org/apache/kafka/streams/tests/StreamsSmokeTest.java
+++ b/streams/src/test/java/org/apache/kafka/streams/tests/StreamsSmokeTest.java
@@ -16,6 +16,7 @@
*/
package org.apache.kafka.streams.tests;
+import org.apache.kafka.common.utils.Exit;
import org.apache.kafka.common.utils.Utils;
import org.apache.kafka.streams.StreamsConfig;
@@ -40,7 +41,7 @@ public class StreamsSmokeTest {
public static void main(final String[] args) throws IOException {
if (args.length < 2) {
System.err.println("StreamsSmokeTest are expecting two parameters: propFile, command; but only see " + args.length + " parameter");
- System.exit(1);
+ Exit.exit(1);
}
final String propFileName = args[0];
@@ -53,7 +54,7 @@ public class StreamsSmokeTest {
if (kafka == null) {
System.err.println("No bootstrap kafka servers specified in " + StreamsConfig.BOOTSTRAP_SERVERS_CONFIG);
- System.exit(1);
+ Exit.exit(1);
}
if ("process".equals(command)) {
@@ -64,7 +65,7 @@ public class StreamsSmokeTest {
System.err.println("processingGuarantee must be either " + StreamsConfig.AT_LEAST_ONCE + ", " +
StreamsConfig.EXACTLY_ONCE + ", or " + StreamsConfig.EXACTLY_ONCE_BETA);
- System.exit(1);
+ Exit.exit(1);
}
}
diff --git a/streams/src/test/java/org/apache/kafka/streams/tests/StreamsStandByReplicaTest.java b/streams/src/test/java/org/apache/kafka/streams/tests/StreamsStandByReplicaTest.java
index 0d424749dad..4da2b2d4815 100644
--- a/streams/src/test/java/org/apache/kafka/streams/tests/StreamsStandByReplicaTest.java
+++ b/streams/src/test/java/org/apache/kafka/streams/tests/StreamsStandByReplicaTest.java
@@ -48,7 +48,7 @@ public class StreamsStandByReplicaTest {
if (args.length < 2) {
System.err.println("StreamsStandByReplicaTest are expecting two parameters: " +
"propFile, additionalConfigs; but only see " + args.length + " parameter");
- System.exit(1);
+ Exit.exit(1);
}
System.out.println("StreamsTest instance started");
@@ -61,7 +61,7 @@ public class StreamsStandByReplicaTest {
if (kafka == null) {
System.err.println("No bootstrap kafka servers specified in " + StreamsConfig.BOOTSTRAP_SERVERS_CONFIG);
- System.exit(1);
+ Exit.exit(1);
}
streamsProperties.put(StreamsConfig.APPLICATION_ID_CONFIG, "kafka-streams-standby-tasks");
@@ -75,7 +75,7 @@ public class StreamsStandByReplicaTest {
if (additionalConfigs == null) {
System.err.println("additional configs are not provided");
System.err.flush();
- System.exit(1);
+ Exit.exit(1);
}
final Map updated = SystemTestUtil.parseConfigs(additionalConfigs);
@@ -92,7 +92,7 @@ public class StreamsStandByReplicaTest {
sinkTopic1,
sinkTopic2));
System.err.flush();
- System.exit(1);
+ Exit.exit(1);
}
streamsProperties.putAll(updated);
@@ -104,7 +104,7 @@ public class StreamsStandByReplicaTest {
StreamsConfig.producerPrefix(ProducerConfig.REQUEST_TIMEOUT_MS_CONFIG),
StreamsConfig.producerPrefix(ProducerConfig.MAX_BLOCK_MS_CONFIG)));
- System.exit(1);
+ Exit.exit(1);
}
final StreamsBuilder builder = new StreamsBuilder();
diff --git a/streams/upgrade-system-tests-22/src/test/java/org/apache/kafka/streams/tests/StreamsSmokeTest.java b/streams/upgrade-system-tests-22/src/test/java/org/apache/kafka/streams/tests/StreamsSmokeTest.java
index 07c7d5d82eb..f280eb07218 100644
--- a/streams/upgrade-system-tests-22/src/test/java/org/apache/kafka/streams/tests/StreamsSmokeTest.java
+++ b/streams/upgrade-system-tests-22/src/test/java/org/apache/kafka/streams/tests/StreamsSmokeTest.java
@@ -16,6 +16,7 @@
*/
package org.apache.kafka.streams.tests;
+import org.apache.kafka.common.utils.Exit;
import org.apache.kafka.common.utils.Utils;
import org.apache.kafka.streams.StreamsConfig;
@@ -40,7 +41,7 @@ public class StreamsSmokeTest {
public static void main(final String[] args) throws IOException {
if (args.length < 2) {
System.err.println("StreamsSmokeTest are expecting two parameters: propFile, command; but only see " + args.length + " parameter");
- System.exit(1);
+ Exit.exit(1);
}
final String propFileName = args[0];
@@ -53,7 +54,7 @@ public class StreamsSmokeTest {
if (kafka == null) {
System.err.println("No bootstrap kafka servers specified in " + StreamsConfig.BOOTSTRAP_SERVERS_CONFIG);
- System.exit(1);
+ Exit.exit(1);
}
if ("process".equals(command)) {
@@ -63,7 +64,7 @@ public class StreamsSmokeTest {
System.err.println("processingGuarantee must be either " + StreamsConfig.AT_LEAST_ONCE + " or " +
StreamsConfig.EXACTLY_ONCE);
- System.exit(1);
+ Exit.exit(1);
}
}
diff --git a/streams/upgrade-system-tests-23/src/test/java/org/apache/kafka/streams/tests/StreamsSmokeTest.java b/streams/upgrade-system-tests-23/src/test/java/org/apache/kafka/streams/tests/StreamsSmokeTest.java
index 07c7d5d82eb..f280eb07218 100644
--- a/streams/upgrade-system-tests-23/src/test/java/org/apache/kafka/streams/tests/StreamsSmokeTest.java
+++ b/streams/upgrade-system-tests-23/src/test/java/org/apache/kafka/streams/tests/StreamsSmokeTest.java
@@ -16,6 +16,7 @@
*/
package org.apache.kafka.streams.tests;
+import org.apache.kafka.common.utils.Exit;
import org.apache.kafka.common.utils.Utils;
import org.apache.kafka.streams.StreamsConfig;
@@ -40,7 +41,7 @@ public class StreamsSmokeTest {
public static void main(final String[] args) throws IOException {
if (args.length < 2) {
System.err.println("StreamsSmokeTest are expecting two parameters: propFile, command; but only see " + args.length + " parameter");
- System.exit(1);
+ Exit.exit(1);
}
final String propFileName = args[0];
@@ -53,7 +54,7 @@ public class StreamsSmokeTest {
if (kafka == null) {
System.err.println("No bootstrap kafka servers specified in " + StreamsConfig.BOOTSTRAP_SERVERS_CONFIG);
- System.exit(1);
+ Exit.exit(1);
}
if ("process".equals(command)) {
@@ -63,7 +64,7 @@ public class StreamsSmokeTest {
System.err.println("processingGuarantee must be either " + StreamsConfig.AT_LEAST_ONCE + " or " +
StreamsConfig.EXACTLY_ONCE);
- System.exit(1);
+ Exit.exit(1);
}
}
diff --git a/streams/upgrade-system-tests-24/src/test/java/org/apache/kafka/streams/tests/StreamsSmokeTest.java b/streams/upgrade-system-tests-24/src/test/java/org/apache/kafka/streams/tests/StreamsSmokeTest.java
index 07c7d5d82eb..f280eb07218 100644
--- a/streams/upgrade-system-tests-24/src/test/java/org/apache/kafka/streams/tests/StreamsSmokeTest.java
+++ b/streams/upgrade-system-tests-24/src/test/java/org/apache/kafka/streams/tests/StreamsSmokeTest.java
@@ -16,6 +16,7 @@
*/
package org.apache.kafka.streams.tests;
+import org.apache.kafka.common.utils.Exit;
import org.apache.kafka.common.utils.Utils;
import org.apache.kafka.streams.StreamsConfig;
@@ -40,7 +41,7 @@ public class StreamsSmokeTest {
public static void main(final String[] args) throws IOException {
if (args.length < 2) {
System.err.println("StreamsSmokeTest are expecting two parameters: propFile, command; but only see " + args.length + " parameter");
- System.exit(1);
+ Exit.exit(1);
}
final String propFileName = args[0];
@@ -53,7 +54,7 @@ public class StreamsSmokeTest {
if (kafka == null) {
System.err.println("No bootstrap kafka servers specified in " + StreamsConfig.BOOTSTRAP_SERVERS_CONFIG);
- System.exit(1);
+ Exit.exit(1);
}
if ("process".equals(command)) {
@@ -63,7 +64,7 @@ public class StreamsSmokeTest {
System.err.println("processingGuarantee must be either " + StreamsConfig.AT_LEAST_ONCE + " or " +
StreamsConfig.EXACTLY_ONCE);
- System.exit(1);
+ Exit.exit(1);
}
}
diff --git a/streams/upgrade-system-tests-25/src/test/java/org/apache/kafka/streams/tests/StreamsSmokeTest.java b/streams/upgrade-system-tests-25/src/test/java/org/apache/kafka/streams/tests/StreamsSmokeTest.java
index 07c7d5d82eb..f280eb07218 100644
--- a/streams/upgrade-system-tests-25/src/test/java/org/apache/kafka/streams/tests/StreamsSmokeTest.java
+++ b/streams/upgrade-system-tests-25/src/test/java/org/apache/kafka/streams/tests/StreamsSmokeTest.java
@@ -16,6 +16,7 @@
*/
package org.apache.kafka.streams.tests;
+import org.apache.kafka.common.utils.Exit;
import org.apache.kafka.common.utils.Utils;
import org.apache.kafka.streams.StreamsConfig;
@@ -40,7 +41,7 @@ public class StreamsSmokeTest {
public static void main(final String[] args) throws IOException {
if (args.length < 2) {
System.err.println("StreamsSmokeTest are expecting two parameters: propFile, command; but only see " + args.length + " parameter");
- System.exit(1);
+ Exit.exit(1);
}
final String propFileName = args[0];
@@ -53,7 +54,7 @@ public class StreamsSmokeTest {
if (kafka == null) {
System.err.println("No bootstrap kafka servers specified in " + StreamsConfig.BOOTSTRAP_SERVERS_CONFIG);
- System.exit(1);
+ Exit.exit(1);
}
if ("process".equals(command)) {
@@ -63,7 +64,7 @@ public class StreamsSmokeTest {
System.err.println("processingGuarantee must be either " + StreamsConfig.AT_LEAST_ONCE + " or " +
StreamsConfig.EXACTLY_ONCE);
- System.exit(1);
+ Exit.exit(1);
}
}
diff --git a/streams/upgrade-system-tests-26/src/test/java/org/apache/kafka/streams/tests/StreamsSmokeTest.java b/streams/upgrade-system-tests-26/src/test/java/org/apache/kafka/streams/tests/StreamsSmokeTest.java
index 07c7d5d82eb..f280eb07218 100644
--- a/streams/upgrade-system-tests-26/src/test/java/org/apache/kafka/streams/tests/StreamsSmokeTest.java
+++ b/streams/upgrade-system-tests-26/src/test/java/org/apache/kafka/streams/tests/StreamsSmokeTest.java
@@ -16,6 +16,7 @@
*/
package org.apache.kafka.streams.tests;
+import org.apache.kafka.common.utils.Exit;
import org.apache.kafka.common.utils.Utils;
import org.apache.kafka.streams.StreamsConfig;
@@ -40,7 +41,7 @@ public class StreamsSmokeTest {
public static void main(final String[] args) throws IOException {
if (args.length < 2) {
System.err.println("StreamsSmokeTest are expecting two parameters: propFile, command; but only see " + args.length + " parameter");
- System.exit(1);
+ Exit.exit(1);
}
final String propFileName = args[0];
@@ -53,7 +54,7 @@ public class StreamsSmokeTest {
if (kafka == null) {
System.err.println("No bootstrap kafka servers specified in " + StreamsConfig.BOOTSTRAP_SERVERS_CONFIG);
- System.exit(1);
+ Exit.exit(1);
}
if ("process".equals(command)) {
@@ -63,7 +64,7 @@ public class StreamsSmokeTest {
System.err.println("processingGuarantee must be either " + StreamsConfig.AT_LEAST_ONCE + " or " +
StreamsConfig.EXACTLY_ONCE);
- System.exit(1);
+ Exit.exit(1);
}
}
diff --git a/tools/src/main/java/org/apache/kafka/tools/TransactionalMessageCopier.java b/tools/src/main/java/org/apache/kafka/tools/TransactionalMessageCopier.java
index 13c18d088b5..cbdfa4df1a2 100644
--- a/tools/src/main/java/org/apache/kafka/tools/TransactionalMessageCopier.java
+++ b/tools/src/main/java/org/apache/kafka/tools/TransactionalMessageCopier.java
@@ -382,6 +382,6 @@ public class TransactionalMessageCopier {
consumer.close();
}
}
- System.exit(0);
+ Exit.exit(0);
}
}