Skip to content

Commit ffce143

Browse files
garyrussellartembilan
authored andcommitted
Prevent EmbeddedKafkaBroker exiting the JVM
See #194 See #345 See gradle/gradle#11195 **cherry-pick to 2.4.x, 2.3.x, 2.2.x, 1.3.x**
1 parent 444f928 commit ffce143

File tree

1 file changed

+22
-0
lines changed

1 file changed

+22
-0
lines changed

spring-kafka-test/src/main/java/org/springframework/kafka/test/EmbeddedKafkaBroker.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
import org.apache.kafka.clients.consumer.ConsumerRecords;
4747
import org.apache.kafka.common.TopicPartition;
4848
import org.apache.kafka.common.security.auth.SecurityProtocol;
49+
import org.apache.kafka.common.utils.Exit;
4950
import org.apache.kafka.common.utils.Time;
5051
import org.apache.kafka.common.utils.Utils;
5152
import org.apache.zookeeper.server.NIOServerCnxnFactory;
@@ -283,6 +284,7 @@ public EmbeddedKafkaBroker zkSessionTimeout(int zkSessionTimeout) {
283284

284285
@Override
285286
public void afterPropertiesSet() {
287+
overrideExitMethods();
286288
try {
287289
this.zookeeper = new EmbeddedZookeeper(this.zkPort);
288290
}
@@ -319,6 +321,26 @@ public void afterPropertiesSet() {
319321
System.setProperty(SPRING_EMBEDDED_ZOOKEEPER_CONNECT, getZookeeperConnectionString());
320322
}
321323

324+
private void overrideExitMethods() {
325+
String exitMsg = "Exit.%s(%d, %s) called";
326+
Exit.setExitProcedure((statusCode, message) -> {
327+
if (logger.isDebugEnabled()) {
328+
logger.debug(new RuntimeException(), String.format(exitMsg, "exit", statusCode, message));
329+
}
330+
else {
331+
logger.warn(String.format(exitMsg, "exit", statusCode, message));
332+
}
333+
});
334+
Exit.setHaltProcedure((statusCode, message) -> {
335+
if (logger.isDebugEnabled()) {
336+
logger.debug(new RuntimeException(), String.format(exitMsg, "halt", statusCode, message));
337+
}
338+
else {
339+
logger.warn(String.format(exitMsg, "halt", statusCode, message));
340+
}
341+
});
342+
}
343+
322344
private Properties createBrokerProperties(int i) {
323345
return TestUtils.createBrokerConfig(i, this.zkConnect, this.controlledShutdown,
324346
true, this.kafkaPorts[i],

0 commit comments

Comments
 (0)