Details
-
Type:
Bug
-
Status: Resolved
-
Priority:
Minor
-
Resolution: Fixed
-
Affects Version/s: 2.17.3
-
Component/s: camel-spring-boot
-
Labels:None
-
Estimated Complexity:Unknown
Description
Camel doesn't shutdown properly in a Spring Boot environment. Calling the /shutdown endpoint causes Camel to hang-up after stopping the CamelContext. The reason for this is the count-down latch in the CamelSpringBootApplicationController. The overriden Main class modifies the latch in the Main class itself, not the one in CamelSpringBootApplicationController. As a result, the latch in CamelSpringBootApplicationController is waiting forever preventing a proper shutdown.
CamelSpringBootApplicationController .java
public CamelSpringBootApplicationController(final ApplicationContext applicationContext, final CamelContext camelContext) { this.main = new Main() { ... @Override protected void doStop() throws Exception { LOG.debug("Controller is shutting down CamelContext"); try { super.doStop(); } finally { // Should be CamelSpringBootApplicationController.this.latch.countDown(); latch.countDown(); } } }; }