-
Notifications
You must be signed in to change notification settings - Fork 1.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ApplicationFailedEvent should always quit application but jvm is kept alive by kafka consumers #2055
Comments
This is really a question for the Spring Boot folks, not here, since you are describing a possible change in Boot's behavior. From this project's perspective, the consumers will be stopped and closed when the application context is closed. |
While Boot's behaviour has changed, I believe Spring Kafka would suffer the same problem with any |
I just verified this theory and it is the case. I took the sample app, replaced the dependency on
The JVM does not exit after the startup failure due to the non-daemon thread named |
Thanks, Andy; I checked the other endpoint registries (JMS, RabbitMQ) and the containers there all implement |
Resolves spring-projects#2055 If context initialization fails, `Lifecycle.stop()` is not called. Containers must be stopped from `DisposableBean` in this case. **cherry-pick to 2.7.x, 2.6.x, 2.5.x**
Resolves spring-projects#2055 If context initialization fails, `Lifecycle.stop()` is not called. Containers must be stopped from `DisposableBean` in this case. **cherry-pick to 2.7.x, 2.6.x, 2.5.x**
Resolves spring-projects#2055 If context initialization fails, `Lifecycle.stop()` is not called. Containers must be stopped from `DisposableBean` in this case. **cherry-pick to 2.7.x, 2.6.x, 2.5.x**
Resolves spring-projects#2055 If context initialization fails, `Lifecycle.stop()` is not called. Containers must be stopped from `DisposableBean` in this case. **cherry-pick to 2.7.x, 2.6.x, 2.5.x**
Resolves #2055 If context initialization fails, `Lifecycle.stop()` is not called. Containers must be stopped from `DisposableBean` in this case. **cherry-pick to 2.7.x, 2.6.x, 2.5.x**
Resolves #2055 If context initialization fails, `Lifecycle.stop()` is not called. Containers must be stopped from `DisposableBean` in this case. **cherry-pick to 2.7.x, 2.6.x, 2.5.x** # Conflicts: # spring-kafka/src/main/java/org/springframework/kafka/listener/MessageListenerContainer.java
Resolves #2055 If context initialization fails, `Lifecycle.stop()` is not called. Containers must be stopped from `DisposableBean` in this case. **cherry-pick to 2.7.x, 2.6.x, 2.5.x** # Conflicts: # spring-kafka/src/main/java/org/springframework/kafka/listener/MessageListenerContainer.java # Conflicts: # spring-kafka/src/main/java/org/springframework/kafka/config/KafkaListenerEndpointRegistry.java # spring-kafka/src/main/java/org/springframework/kafka/listener/MessageListenerContainer.java
Resolves #2055 If context initialization fails, `Lifecycle.stop()` is not called. Containers must be stopped from `DisposableBean` in this case. **cherry-pick to 2.7.x, 2.6.x, 2.5.x** # Conflicts: # spring-kafka/src/main/java/org/springframework/kafka/listener/MessageListenerContainer.java # Conflicts: # spring-kafka/src/main/java/org/springframework/kafka/config/KafkaListenerEndpointRegistry.java # spring-kafka/src/main/java/org/springframework/kafka/listener/MessageListenerContainer.java
Hello,
I'm facing an issue on
Spring Boot 2.5.4
under the following conditions:spring-boot-starter-parent:2.5.4
spring-boot-starter-web:2.5.4
spring-kafka:2.7.6
Tomcat
won't start becausePort 8080 is already in use
In this scenario an
ApplicationFailedEvent
is triggered andmain thread
is killed, but the application won't quit becausekafka consumers
threads are still alive. This results in a compromised application that appears like is up and running, but it is not.I have also made a test using legacy
spring-boot-starter-parent:2.2.10.RELEASE
and related dependencies. In this scenario the behaviour is different and the Spring boot application quits as expected.I've published a simple project to reproduce the problem at this link https://github.com/tnormani/application-failed-event-testcase .
Project requires
port 8080
to be already bound by something else and akafka broker
for the consumer connection.In the project you will find also a
ApplicationFailedListener
I created during tests, but it's not referenced in thespring.factories
file to make test case behave as expected.I've also raised a question on StackOverflow (https://stackoverflow.com/questions/70378200/how-to-make-a-spring-boot-application-quit-on-tomcat-failure) days ago but after the comparison with
spring-boot-starter-parent:2.2.10.RELEASE
and some further testing, I thought it would be better if you could have a look at it.Thanks in advance.
The text was updated successfully, but these errors were encountered: