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)

Reply via email to