John Blum created GEODE-8286:
--------------------------------
Summary: The Geode JVM Shutdown Hook should not be enabled by
default
Key: GEODE-8286
URL: https://issues.apache.org/jira/browse/GEODE-8286
Project: Geode
Issue Type: Improvement
Components: configuration, general, management
Reporter: John Blum
Apache Geode registers a JVM Shutdown Hook in
[InternalDistributedSystem|https://github.com/apache/geode/blob/rel/v1.12.0/geode-core/src/main/java/org/apache/geode/distributed/internal/InternalDistributedSystem.java#L2190-L2222]
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|https://github.com/apache/geode/blob/rel/v1.12.0/geode-core/src/main/java/org/apache/geode/distributed/internal/InternalDistributedSystem.java#L2191]
(and specifically,
[this|https://github.com/apache/geode/blob/rel/v1.12.0/geode-core/src/main/java/org/apache/geode/distributed/internal/InternalDistributedSystem.java#L391-L392])
controlling the enablement of the JVM Shutdown Hook, is non-public and [not
documented|https://geode.apache.org/docs/guide/112/reference/topics/gemfire_properties.html].
--
This message was sent by Atlassian Jira
(v8.3.4#803005)