Skip to content

Commit 9e56111

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** # Conflicts: # spring-kafka-test/src/main/java/org/springframework/kafka/test/EmbeddedKafkaBroker.java
1 parent 650b448 commit 9e56111

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

5152
import org.springframework.beans.factory.DisposableBean;
@@ -202,6 +203,7 @@ public void setAdminTimeout(int adminTimeout) {
202203

203204
@Override
204205
public void afterPropertiesSet() {
206+
overrideExitMethods();
205207
this.zookeeper = new EmbeddedZookeeper();
206208
int zkConnectionTimeout = 6000; // NOSONAR magic #
207209
int zkSessionTimeout = 6000; // NOSONAR magic #
@@ -235,6 +237,26 @@ public void afterPropertiesSet() {
235237
System.setProperty(SPRING_EMBEDDED_ZOOKEEPER_CONNECT, getZookeeperConnectionString());
236238
}
237239

240+
private void overrideExitMethods() {
241+
String exitMsg = "Exit.%s(%d, %s) called";
242+
Exit.setExitProcedure((statusCode, message) -> {
243+
if (logger.isDebugEnabled()) {
244+
logger.debug(new RuntimeException(), String.format(exitMsg, "exit", statusCode, message));
245+
}
246+
else {
247+
logger.warn(String.format(exitMsg, "exit", statusCode, message));
248+
}
249+
});
250+
Exit.setHaltProcedure((statusCode, message) -> {
251+
if (logger.isDebugEnabled()) {
252+
logger.debug(new RuntimeException(), String.format(exitMsg, "halt", statusCode, message));
253+
}
254+
else {
255+
logger.warn(String.format(exitMsg, "halt", statusCode, message));
256+
}
257+
});
258+
}
259+
238260
private Properties createBrokerProperties(int i) {
239261
return TestUtils.createBrokerConfig(i, this.zkConnect, this.controlledShutdown,
240262
true, this.kafkaPorts[i],

0 commit comments

Comments
 (0)