Details
-
Bug
-
Status: Open
-
Critical
-
Resolution: Unresolved
-
None
-
None
Description
Apache Geode registers a JVM Shutdown Hook in InternalDistributedSystem that ensures the Apache Geode Cache and associated DistributedSystem are shutdown properly when the JVM exits.
However, this JVM Shutdown Hook and interfere with Frameworks and Tooling that have their own Lifecycle Management capabilities. The Spring Framework and Container is one such example.
Any managed environment, be that Micronaut, Quarkus, Pivotal Platform (PCF/TAS), Kubernetes, AWS, Azure, GCP, etc, etc, are going to have lifecycle management capabilities.
It is very important that the environment manage the lifecycle of all actors in the fully "integrated" system.
In Spring's case, it must coordinate the lifecycle of application components along with integrated systems, like Geode, in an effort to shut all components down in a coordinated, correct fashion.
If Geode's JVM Shutdown Hook is permitted to do as it pleases, then this can circumvent the Framework/Container, Tool, or other's lifecycle management capabilities, leaving the system or application in an inconsistent/incorrect state.
To make matters worse, the JVM System Property (and specifically, this) controlling the enablement of the JVM Shutdown Hook, is non-public and not documented.