conor       2003/07/15 00:19:15

  Modified:    src/main/org/apache/tools/ant/taskdefs Execute.java
                        ExecuteWatchdog.java ProcessDestroyer.java
               src/main/org/apache/tools/ant/util Watchdog.java
  Log:
  Ensure terminated processes are allowed to complete before finishing the
  Ant shutdown
  
  PR:   8510
  
  Revision  Changes    Path
  1.56      +21 -18    ant/src/main/org/apache/tools/ant/taskdefs/Execute.java
  
  Index: Execute.java
  ===================================================================
  RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/Execute.java,v
  retrieving revision 1.55
  retrieving revision 1.56
  diff -u -w -u -r1.55 -r1.56
  --- Execute.java      23 May 2003 13:40:37 -0000      1.55
  +++ Execute.java      15 Jul 2003 07:19:14 -0000      1.56
  @@ -450,6 +450,7 @@
           }
           streamHandler.start();
   
  +        try {
           // add the process to the list of those to destroy if the VM exits
           //
           processDestroyer.add(process);
  @@ -459,18 +460,20 @@
           }
           waitFor(process);
   
  -        // remove the process to the list of those to destroy if the VM exits
  -        //
  -        processDestroyer.remove(process);
  -
           if (watchdog != null) {
               watchdog.stop();
           }
           streamHandler.stop();
  +
           if (watchdog != null) {
               watchdog.checkException();
           }
           return getExitValue();
  +        } finally {
  +            // remove the process to the list of those to destroy if the VM 
exits
  +            //
  +            processDestroyer.remove(process);
  +        }
       }
   
       protected void waitFor(Process process) {
  
  
  
  1.14      +1 -1      
ant/src/main/org/apache/tools/ant/taskdefs/ExecuteWatchdog.java
  
  Index: ExecuteWatchdog.java
  ===================================================================
  RCS file: 
/home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/ExecuteWatchdog.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -w -u -r1.13 -r1.14
  
  
  
  1.10      +8 -0      
ant/src/main/org/apache/tools/ant/taskdefs/ProcessDestroyer.java
  
  Index: ProcessDestroyer.java
  ===================================================================
  RCS file: 
/home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/ProcessDestroyer.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -w -u -r1.9 -r1.10
  --- ProcessDestroyer.java     14 Jul 2003 16:02:41 -0000      1.9
  +++ ProcessDestroyer.java     15 Jul 2003 07:19:15 -0000      1.10
  @@ -214,6 +214,7 @@
           synchronized (processes) {
               boolean processRemoved = processes.removeElement(process);
               if (processes.size() == 0) {
  +                processes.notify();
                   removeShutdownHook();
               }
               return processRemoved;
  @@ -228,6 +229,13 @@
               Enumeration e = processes.elements();
               while (e.hasMoreElements()) {
                   ((Process) e.nextElement()).destroy();
  +            }
  +
  +            try {
  +                // wait for all processes to finish
  +                processes.wait();
  +            } catch (InterruptedException interrupt) {
  +                // ignore
               }
           }
       }
  
  
  
  1.5       +2 -1      ant/src/main/org/apache/tools/ant/util/Watchdog.java
  
  Index: Watchdog.java
  ===================================================================
  RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/util/Watchdog.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -w -u -r1.4 -r1.5
  --- Watchdog.java     7 Mar 2003 11:23:08 -0000       1.4
  +++ Watchdog.java     15 Jul 2003 07:19:15 -0000      1.5
  @@ -114,7 +114,8 @@
           while (!stopped && until > (now = System.currentTimeMillis())) {
               try {
                   wait(until - now);
  -            } catch (InterruptedException e) {}
  +            } catch (InterruptedException e) {
  +            }
           }
           if (!stopped) {
               fireTimeoutOccured();
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to