Repository: airavata Updated Branches: refs/heads/master 4a0571d6b -> 13c67c460
updating file clearing on start and stop Project: http://git-wip-us.apache.org/repos/asf/airavata/repo Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/e181bfb2 Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/e181bfb2 Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/e181bfb2 Branch: refs/heads/master Commit: e181bfb24c01e142e8ee4e92ce30d80ca3c029e9 Parents: 58872ce Author: Saminda Wijeratne <[email protected]> Authored: Tue Mar 11 15:51:50 2014 -0400 Committer: Saminda Wijeratne <[email protected]> Committed: Tue Mar 11 15:51:50 2014 -0400 ---------------------------------------------------------------------- .../common/utils/ApplicationSettings.java | 17 +++++++- .../airavata/common/utils/StringUtil.java | 5 ++- .../src/main/assembly/bin-assembly.xml | 18 -------- .../src/main/resources/bin/airavata-server.sh | 14 +++--- .../resources/conf/airavata-server.properties | 3 ++ .../org/apache/airavata/server/ServerMain.java | 45 +++++++++++++++++++- 6 files changed, 73 insertions(+), 29 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/airavata/blob/e181bfb2/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/ApplicationSettings.java ---------------------------------------------------------------------- diff --git a/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/ApplicationSettings.java b/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/ApplicationSettings.java index 82bf4dc..ea3b1ef 100644 --- a/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/ApplicationSettings.java +++ b/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/ApplicationSettings.java @@ -54,6 +54,11 @@ public abstract class ApplicationSettings { private final static Logger logger = LoggerFactory.getLogger(ApplicationSettings.class); + private static final String SHUTDOWN_STATEGY_STRING="shutdown.strategy"; + public static enum ShutdownStrategy{ + NONE, + SELF_TERMINATE + } static{ loadProperties(); } @@ -265,5 +270,15 @@ public abstract class ApplicationSettings { public static void mergeSettingsCommandLineArgs(String[] args){ properties.putAll(StringUtil.parseCommandLineOptions(args)); } - + + public static ShutdownStrategy getShutdownStrategy() throws Exception{ + String strategy = null; + try { + strategy = getSetting(SHUTDOWN_STATEGY_STRING, ShutdownStrategy.SELF_TERMINATE.toString()); + return ShutdownStrategy.valueOf(strategy); + } catch (Exception e) { + //if the string mentioned in config is invalid + throw new Exception("Invalid shutdown strategy configured : "+strategy); + } + } } http://git-wip-us.apache.org/repos/asf/airavata/blob/e181bfb2/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/StringUtil.java ---------------------------------------------------------------------- diff --git a/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/StringUtil.java b/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/StringUtil.java index 6356326..3ce5cda 100644 --- a/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/StringUtil.java +++ b/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/StringUtil.java @@ -404,8 +404,9 @@ public class StringUtil { Map<String,String> commandLineOptions=new HashMap<String,String>(); try { CommandLineParameters cmdParameters = getCommandLineParser(args); - for (String s : cmdParameters.getParameters().keySet()) { - commandLineOptions.put(s, cmdParameters.getParameters().get(s)); + Map<String, String> parameters = cmdParameters.getParameters(); + for (String s : parameters.keySet()) { + commandLineOptions.put(s, parameters.get(s)==null? "":parameters.get(s)); } } catch (ParseException e1) { e1.printStackTrace(); http://git-wip-us.apache.org/repos/asf/airavata/blob/e181bfb2/modules/distribution/airavata-server/src/main/assembly/bin-assembly.xml ---------------------------------------------------------------------- diff --git a/modules/distribution/airavata-server/src/main/assembly/bin-assembly.xml b/modules/distribution/airavata-server/src/main/assembly/bin-assembly.xml index ab3bbf3..cd75afa 100644 --- a/modules/distribution/airavata-server/src/main/assembly/bin-assembly.xml +++ b/modules/distribution/airavata-server/src/main/assembly/bin-assembly.xml @@ -229,26 +229,8 @@ <include>org.apache.airavata:airavata-api-server:jar</include> <include>org.apache.airavata:airavata-api-stubs:jar</include> <include>org.apache.openjpa:openjpa-all:jar</include> - <include>com.sun.jersey:jersey-client:jar</include> - <include>com.sun.jersey:jersey-core:jar</include> <include>org.bouncycastle:bcprov-jdk16</include> - <include>org.apache.tomcat:tomcat-jasper</include> - <include>org.apache.tomcat:tomcat-jasper-el</include> - <include>org.apache.tomcat:tomcat-jsp-api</include> - <include>org.apache.tomcat.embed:tomcat-embed-core</include> - <include>org.apache.tomcat.embed:tomcat-embed-jasper</include> - <include>org.apache.tomcat.embed:tomcat-embed-logging-juli</include> <include>javax.servlet:javax.servlet-api</include> - <include>org.apache.shiro:shiro-core</include> - <include>com.sun.jersey:jersey-servlet</include> - <include>com.sun.jersey:jersey-json</include> - <include>com.sun.jersey.contribs:jersey-multipart</include> - <include>com.sun.jersey:jersey-server</include> - <include>com.sun.jersey:jersey-client</include> - <include>org.codehaus.jackson:jackson-jaxrs</include> - <include>org.codehaus.jackson:jackson-core-asl</include> - <include>org.codehaus.jackson:jackson-mapper-asl</include> - <include>org.codehaus.jackson:jackson-xc</include> <include>xerces:xercesImpl:jar:2.9.1</include> <include>com.ibm.icu:icu4j</include> <include>com.google.guava:guava</include> http://git-wip-us.apache.org/repos/asf/airavata/blob/e181bfb2/modules/distribution/airavata-server/src/main/resources/bin/airavata-server.sh ---------------------------------------------------------------------- diff --git a/modules/distribution/airavata-server/src/main/resources/bin/airavata-server.sh b/modules/distribution/airavata-server/src/main/resources/bin/airavata-server.sh index 715da4e..9247d68 100755 --- a/modules/distribution/airavata-server/src/main/resources/bin/airavata-server.sh +++ b/modules/distribution/airavata-server/src/main/resources/bin/airavata-server.sh @@ -52,13 +52,13 @@ do -h) echo "Usage: airavata-server.sh [command-options]" echo "command options:" - echo " start Start server in daemon mode" - echo " stop [--serverIndex n] Stop all airavata servers. Specify serverIndex stop a particular instance" - echo " --<key>=<value> Server setting(s) to override or introduce (overrides values in airavata-server.properties)" - echo " -nologo Do not show airavata logo" - echo " -xdebug Start Airavata Server under JPDA debugger" - echo " -security Enable Java 2 security" - echo " -h Display this help and exit" + echo " start Start server in daemon mode" + echo " stop [--serverIndex n] [--force] Stop all airavata servers. Specify serverIndex stop a particular instance" + echo " --<key>[=<value>] Server setting(s) to override or introduce (overrides values in airavata-server.properties)" + echo " -nologo Do not show airavata logo" + echo " -xdebug Start Airavata Server under JPDA debugger" + echo " -security Enable Java 2 security" + echo " -h Display this help and exit" shift exit 0 ;; http://git-wip-us.apache.org/repos/asf/airavata/blob/e181bfb2/modules/distribution/airavata-server/src/main/resources/conf/airavata-server.properties ---------------------------------------------------------------------- diff --git a/modules/distribution/airavata-server/src/main/resources/conf/airavata-server.properties b/modules/distribution/airavata-server/src/main/resources/conf/airavata-server.properties index 74220c2..f2bb8d7 100644 --- a/modules/distribution/airavata-server/src/main/resources/conf/airavata-server.properties +++ b/modules/distribution/airavata-server/src/main/resources/conf/airavata-server.properties @@ -277,4 +277,7 @@ orchestrator=org.apache.airavata.orchestrator.server.OrchestratorServer ###---------------------------API Server module Configurations---------------------------### apiserver=org.apache.airavata.api.server.AiravataAPIServer +###---------------------------Airavata Server Configurations---------------------------### servers=apiserver,orchestrator +#shutdown.trategy=NONE +shutdown.trategy=SELF_TERMINATE http://git-wip-us.apache.org/repos/asf/airavata/blob/e181bfb2/modules/server/src/main/java/org/apache/airavata/server/ServerMain.java ---------------------------------------------------------------------- diff --git a/modules/server/src/main/java/org/apache/airavata/server/ServerMain.java b/modules/server/src/main/java/org/apache/airavata/server/ServerMain.java index 3a25884..20534fb 100644 --- a/modules/server/src/main/java/org/apache/airavata/server/ServerMain.java +++ b/modules/server/src/main/java/org/apache/airavata/server/ServerMain.java @@ -28,6 +28,7 @@ import java.util.ArrayList; import java.util.List; import org.apache.airavata.common.exception.ApplicationSettingsException; +import org.apache.airavata.common.utils.ApplicationSettings.ShutdownStrategy; import org.apache.airavata.common.utils.IServer; import org.apache.airavata.common.utils.IServer.ServerStatus; import org.apache.airavata.common.utils.ServerSettings; @@ -112,12 +113,27 @@ public class ServerMain { if (hasStopRequested()){ ServerSettings.setStopAllThreads(true); stopAllServers(); - System.exit(0); + ShutdownStrategy shutdownStrategy; + try { + shutdownStrategy = ServerSettings.getShutdownStrategy(); + } catch (Exception e) { + String strategies=""; + for(ShutdownStrategy s:ShutdownStrategy.values()){ + strategies+="/"+s.toString(); + } + logger.warn(e.getMessage()); + logger.warn("Valid shutdown options are : "+strategies.substring(1)); + shutdownStrategy=ShutdownStrategy.SELF_TERMINATE; + } + if (shutdownStrategy==ShutdownStrategy.SELF_TERMINATE) { + System.exit(0); + } } } private static void performServerStopRequest( CommandLineParameters commandLineParameters) throws IOException { + deleteOldStartRecords(); String serverIndexOption = "serverIndex"; if (commandLineParameters.getParameters().containsKey(serverIndexOption)){ serverIndex=Integer.parseInt(commandLineParameters.getParameters().get(serverIndexOption)); @@ -171,6 +187,32 @@ public class ServerMain { return (serverIndex==-1)?stopFileNamePrefixForced:stopFileNamePrefixForced+serverIndex; } + private static void deleteOldStopRequests(){ + File[] files = new File(".").listFiles(); + for (File file : files) { + if (file.getName().contains(stopFileNamePrefix) || file.getName().contains(stopFileNamePrefixForced)){ + try { + file.delete(); + } catch (Exception e) { + //file is locked which means there's an active process using it + } + } + } + } + + private static void deleteOldStartRecords(){ + File[] files = new File(".").listFiles(); + for (File file : files) { + if (file.getName().contains(serverStartedFileNamePrefix)){ + try { + file.delete(); + } catch (Exception e) { + //file is locked which means there's an active process using it + } + } + } + } + private static boolean isServerRunning(){ if (serverIndex==-1){ String[] files = new File(".").list(); @@ -188,6 +230,7 @@ public class ServerMain { @SuppressWarnings({ "resource" }) private static void setServerStarted(){ try { + deleteOldStopRequests(); File serverStartedFile = null; while(serverStartedFile==null || serverStartedFile.exists()){ serverIndex++;
