BROOKLYN-484: fix restart() - launch checks log file
diff --git a/software/messaging/src/main/java/org/apache/brooklyn/entity/messaging/rabbit/RabbitSshDriver.java b/software/messaging/src/main/java/org/apache/brooklyn/entity/messaging/rabbit/RabbitSshDriver.java
index cf22177..747517b 100644
--- a/software/messaging/src/main/java/org/apache/brooklyn/entity/messaging/rabbit/RabbitSshDriver.java
+++ b/software/messaging/src/main/java/org/apache/brooklyn/entity/messaging/rabbit/RabbitSshDriver.java
@@ -44,7 +44,9 @@
import org.apache.brooklyn.util.collections.MutableMap;
import org.apache.brooklyn.util.net.Networking;
import org.apache.brooklyn.util.net.Urls;
+import org.apache.brooklyn.util.ssh.BashCommands;
import org.apache.brooklyn.util.text.Strings;
+import org.apache.brooklyn.util.time.Duration;
/**
* TODO javadoc
@@ -138,16 +140,10 @@
public void launch() {
newScript(MutableMap.of("usePidFile", false), LAUNCHING)
.body.append(
- "rm console-out.log || true",
+ "mv console-out.log console-out-$(date +\"%Y%m%d.%H%M.%S\").log || true",
"nohup ./sbin/rabbitmq-server > console-out.log 2> console-err.log &",
"./sbin/rabbitmqctl wait ${RABBITMQ_PID_FILE}",
- "for i in {1..60}\n" +
- "do\n" +
- " grep 'Starting broker... completed' console-out.log && exit\n" +
- " sleep 1\n" +
- "done",
- "echo \"Couldn't determine if rabbitmq-server is running\"",
- "exit 1"
+ BashCommands.waitForFileContents("console-out.log", "Starting broker... completed", Duration.ONE_MINUTE, true)
).execute();
}
diff --git a/software/webapp/src/main/java/org/apache/brooklyn/entity/webapp/jboss/JBoss6SshDriver.java b/software/webapp/src/main/java/org/apache/brooklyn/entity/webapp/jboss/JBoss6SshDriver.java
index 70d6a14..70eaff0 100644
--- a/software/webapp/src/main/java/org/apache/brooklyn/entity/webapp/jboss/JBoss6SshDriver.java
+++ b/software/webapp/src/main/java/org/apache/brooklyn/entity/webapp/jboss/JBoss6SshDriver.java
@@ -37,6 +37,7 @@
import org.apache.brooklyn.util.net.Networking;
import org.apache.brooklyn.util.os.Os;
import org.apache.brooklyn.util.ssh.BashCommands;
+import org.apache.brooklyn.util.time.Duration;
public class JBoss6SshDriver extends JavaWebAppSshDriver implements JBoss6Driver {
@@ -144,17 +145,13 @@
.body.append(
format("export JBOSS_CLASSPATH=%s/lib/jboss-logmanager.jar",getExpandedInstallDir()),
format("export JBOSS_PIDFILE=%s/%s", getRunDir(), PID_FILENAME),
+ "mv "+getRunDir()+"/console "+getRunDir()+"/console-$(date +\"%Y%m%d.%H%M.%S\") || true",
format("%s/bin/run.sh -Djboss.service.binding.set=%s -Djboss.server.base.dir=$RUN_DIR/server ",getExpandedInstallDir(),PORT_GROUP_NAME) +
format("-Djboss.server.base.url=file://$RUN_DIR/server -Djboss.messaging.ServerPeerID=%s ",entity.getId())+
- format("-Djboss.boot.server.log.dir=%s/server/%s/log ",getRunDir(),SERVER_TYPE) +
- format("-b %s %s -c %s ", getBindAddress(), clusterArg,SERVER_TYPE) +
+ format("-Djboss.boot.server.log.dir=%s/server/%s/log ", getRunDir(), SERVER_TYPE) +
+ format("-b %s %s -c %s ", getBindAddress(), clusterArg, SERVER_TYPE) +
">>$RUN_DIR/console 2>&1 </dev/null &",
- "for i in {1..10}\n" +
- "do\n" +
- " grep -i 'starting' "+getRunDir()+"/console && exit\n" +
- " sleep 1\n" +
- "done\n" +
- "echo \"Couldn't determine if process is running (console output does not contain 'starting'); continuing but may subsequently fail\""
+ BashCommands.waitForFileContents(getRunDir()+"/console", "starting", Duration.TEN_SECONDS, false)
)
.execute();
}
diff --git a/software/webapp/src/main/java/org/apache/brooklyn/entity/webapp/jboss/JBoss7SshDriver.java b/software/webapp/src/main/java/org/apache/brooklyn/entity/webapp/jboss/JBoss7SshDriver.java
index 5fc1e86..0c4a34a 100644
--- a/software/webapp/src/main/java/org/apache/brooklyn/entity/webapp/jboss/JBoss7SshDriver.java
+++ b/software/webapp/src/main/java/org/apache/brooklyn/entity/webapp/jboss/JBoss7SshDriver.java
@@ -37,6 +37,7 @@
import org.apache.brooklyn.util.os.Os;
import org.apache.brooklyn.util.ssh.BashCommands;
import org.apache.brooklyn.util.text.Strings;
+import org.apache.brooklyn.util.time.Duration;
import com.google.common.base.Charsets;
import com.google.common.base.Preconditions;
@@ -206,6 +207,7 @@
"export LAUNCH_JBOSS_IN_BACKGROUND=true",
format("export JBOSS_HOME=%s", getExpandedInstallDir()),
format("export JBOSS_PIDFILE=%s/%s", getRunDir(), PID_FILENAME),
+ "mv "+getRunDir()+"/console "+getRunDir()+"/console-$(date +\"%Y%m%d.%H%M.%S\") || true",
format("%s/bin/%s.sh ", getExpandedInstallDir(), SERVER_TYPE) +
format("--server-config %s ", CONFIG_FILE) +
format("-Djboss.server.base.dir=%s/%s ", getRunDir(), SERVER_TYPE) +
@@ -213,12 +215,7 @@
"-Djava.net.preferIPv4Stack=true " +
"-Djava.net.preferIPv6Addresses=false " +
format(" >> %s/console 2>&1 </dev/null &", getRunDir()),
- "for i in {1..10}\n" +
- "do\n" +
- " grep -i 'starting' "+getRunDir()+"/console && exit\n" +
- " sleep 1\n" +
- "done\n" +
- "echo \"Couldn't determine if process is running (console output does not contain 'starting'); continuing but may subsequently fail\""
+ BashCommands.waitForFileContents("console", "starting", Duration.TEN_SECONDS, false)
)
.execute();
}
diff --git a/software/webapp/src/main/java/org/apache/brooklyn/entity/webapp/jetty/Jetty6SshDriver.java b/software/webapp/src/main/java/org/apache/brooklyn/entity/webapp/jetty/Jetty6SshDriver.java
index f8499e4..1a75d8b 100644
--- a/software/webapp/src/main/java/org/apache/brooklyn/entity/webapp/jetty/Jetty6SshDriver.java
+++ b/software/webapp/src/main/java/org/apache/brooklyn/entity/webapp/jetty/Jetty6SshDriver.java
@@ -32,6 +32,7 @@
import org.apache.brooklyn.util.os.Os;
import org.apache.brooklyn.util.ssh.BashCommands;
import org.apache.brooklyn.util.text.Strings;
+import org.apache.brooklyn.util.time.Duration;
public class Jetty6SshDriver extends JavaWebAppSshDriver implements Jetty6Driver {
@@ -98,19 +99,18 @@
@Override
public void launch() {
- Map ports = MutableMap.of("httpPort", getHttpPort(), "jmxPort", getJmxPort(), "rmiRegistryPort", getRmiRegistryPort());
+ MutableMap<String, Integer> ports = MutableMap.of("httpPort", getHttpPort(), "jmxPort", getJmxPort(), "rmiRegistryPort", getRmiRegistryPort());
Networking.checkPortsValid(ports);
newScript(MutableMap.of(USE_PID_FILE, false), LAUNCHING)
.body.append(
+ "mv "+getLogFileLocation()+" "+getLogFileLocation()+"-$(date +\"%Y%m%d.%H%M.%S\") || true",
"./bin/jetty.sh start jetty-brooklyn.xml jetty.xml jetty-logging.xml jetty-stats.xml " +
(Strings.isEmpty(getConfigXmlTemplateUrl()) ? "" : "jetty-custom.xml ") +
">> $RUN_DIR/console 2>&1 < /dev/null",
- "for i in {1..10} ; do\n" +
- " if [ -s "+getLogFileLocation()+" ]; then exit; fi\n" +
- " sleep 1\n" +
- "done",
- "echo \"Couldn't determine if jetty-server is running (log file is still empty); continuing but may subsequently fail\""
+ BashCommands.waitForFileExists(getLogFileLocation(), Duration.TEN_SECONDS, false),
+ "sleep 5",
+ "cat $RUN_DIR/console"
)
.execute();
log.debug("launched jetty");
diff --git a/software/webapp/src/main/java/org/apache/brooklyn/entity/webapp/tomcat/TomcatSshDriver.java b/software/webapp/src/main/java/org/apache/brooklyn/entity/webapp/tomcat/TomcatSshDriver.java
index 5214b28..eeb88a2 100644
--- a/software/webapp/src/main/java/org/apache/brooklyn/entity/webapp/tomcat/TomcatSshDriver.java
+++ b/software/webapp/src/main/java/org/apache/brooklyn/entity/webapp/tomcat/TomcatSshDriver.java
@@ -35,6 +35,7 @@
import org.apache.brooklyn.util.os.Os;
import org.apache.brooklyn.util.ssh.BashCommands;
import org.apache.brooklyn.util.text.StringEscapes.BashStringEscapes;
+import org.apache.brooklyn.util.time.Duration;
public class TomcatSshDriver extends JavaWebAppSshDriver implements TomcatDriver {
@@ -91,13 +92,9 @@
// so the process failed to start.
newScript(MutableMap.of(USE_PID_FILE, false), LAUNCHING)
.body.append(
+ "mv "+getLogFileLocation()+" "+getLogFileLocation()+"-$(date +\"%Y%m%d.%H%M.%S\").log || true",
format("%s/bin/startup.sh >>$RUN/console 2>&1 </dev/null",getExpandedInstallDir()),
- "for i in {1..10}\n" +
- "do\n" +
- " if [ -s "+getLogFileLocation()+" ]; then exit; fi\n" +
- " sleep 1\n" +
- "done\n" +
- "echo \"Couldn't determine if tomcat-server is running (logs/catalina.out is still empty); continuing but may subsequently fail\""
+ BashCommands.waitForFileExists(getLogFileLocation(), Duration.TEN_SECONDS, false)
)
.execute();
}