From 9b3a77d92f60eb8f629ccc0b6b6abad9d0bd9cba Mon Sep 17 00:00:00 2001 From: John Blum Date: Mon, 30 Mar 2020 14:56:35 -0700 Subject: [PATCH] Add block(:Enviroment) method predicated on a Spring Enviornment resolvable property to prevent the Apache Geode Locator (i.e. JVM) from shutting down immediately. An Apache Geode Locator only creates daemon Threads on startup, which will not prevent the JVM process from falling all the way through and shutting down. --- ...pringBootApacheGeodeLocatorApplication.java | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/spring-geode-tests/smoke-tests/locator-application/src/main/java/example/app/geode/locator/SpringBootApacheGeodeLocatorApplication.java b/spring-geode-tests/smoke-tests/locator-application/src/main/java/example/app/geode/locator/SpringBootApacheGeodeLocatorApplication.java index 1cf59da6..5cfb7bdd 100644 --- a/spring-geode-tests/smoke-tests/locator-application/src/main/java/example/app/geode/locator/SpringBootApacheGeodeLocatorApplication.java +++ b/spring-geode-tests/smoke-tests/locator-application/src/main/java/example/app/geode/locator/SpringBootApacheGeodeLocatorApplication.java @@ -15,13 +15,17 @@ */ package example.app.geode.locator; +import java.util.Scanner; + import org.apache.geode.distributed.Locator; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Profile; +import org.springframework.core.env.Environment; import org.springframework.data.gemfire.GemFireProperties; import org.springframework.data.gemfire.config.annotation.LocatorApplication; import org.springframework.data.gemfire.config.annotation.LocatorConfigurer; @@ -45,7 +49,11 @@ import org.springframework.data.gemfire.config.annotation.LocatorConfigurer; public class SpringBootApacheGeodeLocatorApplication { public static void main(String[] args) { - SpringApplication.run(SpringBootApacheGeodeLocatorApplication.class, args); + + ConfigurableApplicationContext applicationContext = + SpringApplication.run(SpringBootApacheGeodeLocatorApplication.class, args); + + block(applicationContext.getEnvironment()); } @Bean @@ -56,4 +64,12 @@ public class SpringBootApacheGeodeLocatorApplication { return (beanName, bean) -> bean.getGemFireProperties() .setProperty(GemFireProperties.LOCATORS.toString(), locators); } + + private static void block(Environment environment) { + + if (environment.getProperty("spring.boot.data.geode.locator.prompt-for-shutdown", Boolean.class, false)) { + System.err.println("Press to exit."); + new Scanner(System.in).nextLine(); + } + } }