This is an automated email from the ASF dual-hosted git repository. dhemery pushed a commit to branch GEODE-6918-log-when-server-is-online in repository https://gitbox.apache.org/repos/asf/geode.git
commit 2a8b3c7c200df4e7f86fc014c87282dae9d2801e Author: Dale Emery <[email protected]> AuthorDate: Mon Jul 8 14:41:59 2019 -0700 Log when server with no async tasks is done --- .../launchers/ServerStartupNotificationTest.java | 72 ++++++++++++++++++++++ .../apache/geode/distributed/ServerLauncher.java | 5 ++ 2 files changed, 77 insertions(+) diff --git a/geode-assembly/src/acceptanceTest/java/org/apache/geode/launchers/ServerStartupNotificationTest.java b/geode-assembly/src/acceptanceTest/java/org/apache/geode/launchers/ServerStartupNotificationTest.java new file mode 100644 index 0000000..32f8ccd --- /dev/null +++ b/geode-assembly/src/acceptanceTest/java/org/apache/geode/launchers/ServerStartupNotificationTest.java @@ -0,0 +1,72 @@ +package org.apache.geode.launchers; + +import static org.assertj.core.api.Assertions.assertThat; + +import java.io.File; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.regex.Pattern; + +import org.junit.After; +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.TemporaryFolder; +import org.junit.rules.TestName; + +import org.apache.geode.test.awaitility.GeodeAwaitility; +import org.apache.geode.test.junit.rules.gfsh.GfshRule; + +public class ServerStartupNotificationTest { + @Rule + public GfshRule gfshRule = new GfshRule(); + + @Rule + public TemporaryFolder temporaryFolder = new TemporaryFolder(); + + @Rule + public TestName testName = new TestName(); + private File serverFolder; + private String serverName; + + /** + * Test ideas + * - redundancy recovery + * - persistent value recovery + * - ServerLauncher.start() finished + * - Log statement that indicates server is online + * - Meter that reflects server online state + */ + + @Before + public void setup() { + serverFolder = temporaryFolder.getRoot(); + serverName = testName.getMethodName(); + } + + @After + public void stopServer() { + String stopServerCommand = "stop server --dir=" + serverFolder.getAbsolutePath(); + gfshRule.execute(stopServerCommand); + } + + @Test + public void startupWithNoAsyncTasks() { + String startServerCommand = String.join(" ", + "start server", + "--name=" + serverName, + "--dir=" + serverFolder.getAbsolutePath(), + "--disable-default-server"); + + gfshRule.execute(startServerCommand); + + Pattern logLinePattern = Pattern.compile("^\\[info .*].*Server is online.*"); + Path logFile = serverFolder.toPath().resolve(serverName + ".log"); + GeodeAwaitility.await() + .untilAsserted(() -> + assertThat(Files.lines(logFile)) + .as("Log file " + logFile + " includes line matching " + logLinePattern) + .anyMatch(logLinePattern.asPredicate()) + ); + } +} diff --git a/geode-core/src/main/java/org/apache/geode/distributed/ServerLauncher.java b/geode-core/src/main/java/org/apache/geode/distributed/ServerLauncher.java index 63c5a65..0df9b60 100755 --- a/geode-core/src/main/java/org/apache/geode/distributed/ServerLauncher.java +++ b/geode-core/src/main/java/org/apache/geode/distributed/ServerLauncher.java @@ -55,6 +55,8 @@ import joptsimple.OptionException; import joptsimple.OptionParser; import joptsimple.OptionSet; import org.apache.commons.lang3.exception.ExceptionUtils; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.core.jackson.Log4jStackTraceElementDeserializer; import org.apache.geode.SystemFailure; import org.apache.geode.annotations.Immutable; @@ -76,6 +78,7 @@ import org.apache.geode.internal.cache.InternalCache; import org.apache.geode.internal.cache.PartitionedRegion; import org.apache.geode.internal.cache.tier.sockets.CacheServerHelper; import org.apache.geode.internal.lang.ObjectUtils; +import org.apache.geode.internal.logging.LogService; import org.apache.geode.internal.logging.LoggingThread; import org.apache.geode.internal.net.SocketCreator; import org.apache.geode.internal.process.ConnectionFailedException; @@ -180,6 +183,7 @@ public class ServerLauncher extends AbstractLauncher<String> { private static final ServerLauncherCacheProvider DEFAULT_CACHE_PROVIDER = new DefaultServerLauncherCacheProvider(); + private static final Logger logger = LogService.getLogger(); private volatile boolean debug; private final ControlNotificationHandler controlHandler; @@ -808,6 +812,7 @@ public class ServerLauncher extends AbstractLauncher<String> { cache.setIsServer(true); startCacheServer(cache); + logger.info("Server is online"); assignBuckets(cache); rebalance(cache); } finally {
