You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by bd...@apache.org on 2014/04/16 13:59:43 UTC

svn commit: r1587885 - in /sling/trunk/testing/tools/src/main/java/org/apache/sling/testing/tools/jarexec: JarExecutor.java ShutdownHookSingleProcessDestroyer.java

Author: bdelacretaz
Date: Wed Apr 16 11:59:43 2014
New Revision: 1587885

URL: http://svn.apache.org/r1587885
Log:
SLING-3503 - JarExecutor waits for process in shutdown hook if the jar.executor.wait.on.shutdown property is true

Modified:
    sling/trunk/testing/tools/src/main/java/org/apache/sling/testing/tools/jarexec/JarExecutor.java
    sling/trunk/testing/tools/src/main/java/org/apache/sling/testing/tools/jarexec/ShutdownHookSingleProcessDestroyer.java

Modified: sling/trunk/testing/tools/src/main/java/org/apache/sling/testing/tools/jarexec/JarExecutor.java
URL: http://svn.apache.org/viewvc/sling/trunk/testing/tools/src/main/java/org/apache/sling/testing/tools/jarexec/JarExecutor.java?rev=1587885&r1=1587884&r2=1587885&view=diff
==============================================================================
--- sling/trunk/testing/tools/src/main/java/org/apache/sling/testing/tools/jarexec/JarExecutor.java (original)
+++ sling/trunk/testing/tools/src/main/java/org/apache/sling/testing/tools/jarexec/JarExecutor.java Wed Apr 16 11:59:43 2014
@@ -56,6 +56,7 @@ public class JarExecutor {
     public static final String PROP_WORK_FOLDER = PROP_PREFIX + "work.folder";
     public static final String PROP_JAR_OPTIONS = PROP_PREFIX + "jar.options";
     public static final String PROP_EXIT_TIMEOUT_SECONDS = PROP_PREFIX + "exit.timeout.seconds";
+    public static final String PROP_WAIT_ONSHUTDOWN = PROP_PREFIX + "wait.on.shutdown";
 
     @SuppressWarnings("serial")
     public static class ExecutorException extends Exception {
@@ -166,8 +167,11 @@ public class JarExecutor {
 
         log.info("Executing " + cl);
         executor.setStreamHandler(new PumpStreamHandler());
-        executor.setProcessDestroyer(
-                new ShutdownHookSingleProcessDestroyer("java -jar " + jarToExecute.getName(), exitTimeoutSeconds));
+        final ShutdownHookSingleProcessDestroyer pd = new ShutdownHookSingleProcessDestroyer("java -jar " + jarToExecute.getName(), exitTimeoutSeconds);
+        final boolean waitOnShutdown = Boolean.valueOf(config.getProperty(PROP_WAIT_ONSHUTDOWN, "false"));
+        log.info("Setting up ProcessDestroyer with waitOnShutdown=" + waitOnShutdown);
+        pd.setWaitOnShutdown(waitOnShutdown);
+        executor.setProcessDestroyer(pd);
         executor.execute(cl, h);
     }
 

Modified: sling/trunk/testing/tools/src/main/java/org/apache/sling/testing/tools/jarexec/ShutdownHookSingleProcessDestroyer.java
URL: http://svn.apache.org/viewvc/sling/trunk/testing/tools/src/main/java/org/apache/sling/testing/tools/jarexec/ShutdownHookSingleProcessDestroyer.java?rev=1587885&r1=1587884&r2=1587885&view=diff
==============================================================================
--- sling/trunk/testing/tools/src/main/java/org/apache/sling/testing/tools/jarexec/ShutdownHookSingleProcessDestroyer.java (original)
+++ sling/trunk/testing/tools/src/main/java/org/apache/sling/testing/tools/jarexec/ShutdownHookSingleProcessDestroyer.java Wed Apr 16 11:59:43 2014
@@ -33,12 +33,21 @@ class ShutdownHookSingleProcessDestroyer
     private Process process;
     private final int timeoutSeconds;
     private final String processInfo;
+    private boolean waitOnShutdown = false;
     
-    ShutdownHookSingleProcessDestroyer(String processInfo, int timeoutSeconds) {
+    public ShutdownHookSingleProcessDestroyer(String processInfo, int timeoutSeconds) {
         this.processInfo = processInfo;
         this.timeoutSeconds = timeoutSeconds;
     }
     
+    public boolean getWaitOnShutdown() {
+        return waitOnShutdown;
+    }
+
+    public void setWaitOnShutdown(boolean waitOnShutdown) {
+        this.waitOnShutdown = waitOnShutdown;
+    }
+
     public synchronized boolean add(Process p) {
         if(process != null) {
             throw new IllegalStateException("Process already set: " + process);
@@ -63,9 +72,7 @@ class ShutdownHookSingleProcessDestroyer
     }
     
     public void run() {
-        // Do not wait for our process when running as a shutdown
-        // hook - might cause trouble
-        destroyProcess(false);
+        destroyProcess(waitOnShutdown);
     }
     
    public void destroyProcess(boolean waitForIt) {