You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by ch...@apache.org on 2013/03/21 18:20:34 UTC

svn commit: r1459411 - in /uima/sandbox/uima-ducc/trunk: uima-ducc-examples/src/main/java/org/apache/uima/ducc/test/randomsleep/FixedSleepAE.java uima-ducc-rm/src/main/java/org/apache/uima/ducc/rm/scheduler/RmJob.java

Author: challngr
Date: Thu Mar 21 17:20:34 2013
New Revision: 1459411

URL: http://svn.apache.org/r1459411
Log:
UIMA-2767
RM must not increase job cap above 0 if OR has capped it and all processes have died.
Test case FixedSleepAE updated to reproduce this if FAST_INIT_FAIL=true env var set, run via
1.job from examples/simple.

Modified:
    uima/sandbox/uima-ducc/trunk/uima-ducc-examples/src/main/java/org/apache/uima/ducc/test/randomsleep/FixedSleepAE.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-rm/src/main/java/org/apache/uima/ducc/rm/scheduler/RmJob.java

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-examples/src/main/java/org/apache/uima/ducc/test/randomsleep/FixedSleepAE.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-examples/src/main/java/org/apache/uima/ducc/test/randomsleep/FixedSleepAE.java?rev=1459411&r1=1459410&r2=1459411&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-examples/src/main/java/org/apache/uima/ducc/test/randomsleep/FixedSleepAE.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-examples/src/main/java/org/apache/uima/ducc/test/randomsleep/FixedSleepAE.java Thu Mar 21 17:20:34 2013
@@ -2,6 +2,7 @@ package org.apache.uima.ducc.test.random
 
 import java.io.File;
 import java.io.FileNotFoundException;
+import java.io.IOException;
 import java.io.PrintWriter;
 import java.lang.management.ManagementFactory;
 import java.lang.management.RuntimeMXBean;
@@ -35,7 +36,8 @@ public class FixedSleepAE extends CasAnn
     String AE_Identifier = "*^^^^^^^^^ AE ";
 
     @Override
-        public void initialize(UimaContext uimaContext) throws ResourceInitializationException {
+    public void initialize(UimaContext uimaContext) throws ResourceInitializationException 
+    {
         super.initialize(uimaContext);
 
         long tid = Thread.currentThread().getId();
@@ -68,6 +70,35 @@ public class FixedSleepAE extends CasAnn
             }
         }
 
+        if ( System.getenv( "FAST_INIT_FAIL" ) != null ) {
+            // we want just enough init to get at least one process into RUNNING state, but all
+            // subsequent initializations to fail under this scenario.
+            String jobid = System.getProperty("ducc.job.id");
+            String wd = System.getProperty("user.dir");
+            String markerdir = wd + "/" + jobid + ".output";
+            System.out.println("LOOK IN " + markerdir);
+            File marker = new File(markerdir);
+            
+            String[] outputs = marker.list();
+            int count = 0;
+            for ( String s : outputs) {
+                if ( s.endsWith(".die") ) count++;
+                System.out.println("COUNT " + s + " count = " + count);
+                if ( count > 2 ) {
+                    throw new IllegalStateException("foo foo and foo");
+                }
+            }
+            File init_death = new File(markerdir + "/" + tid + ".die");
+            System.out.println("CREATE " + init_death);
+            try {
+                init_death.createNewFile();
+            } catch (IOException e1) {
+                // TODO Auto-generated catch block
+                e1.printStackTrace();
+            }
+        }
+
+
         long sleep;
         if ( !initComplete ) {                                    // longer init only the first tim
             initComplete = true;
@@ -309,6 +340,12 @@ public class FixedSleepAE extends CasAnn
 
         String        msgheader   = "**-------> AE process " + pid + " TID " + tid + " task " + qid + " of " + total;
 
+        if ( System.getenv( "FAST_INIT_FAIL" ) != null ) {
+            // must insure nothing gets done in this case.
+            System.out.println("Croakamundo.");
+            System.exit(1);
+        }
+
         if ( marker == null) {
             if  (!logid.equals("None") ) {
                 marker = new Marker(logid, pid, tid);

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-rm/src/main/java/org/apache/uima/ducc/rm/scheduler/RmJob.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-rm/src/main/java/org/apache/uima/ducc/rm/scheduler/RmJob.java?rev=1459411&r1=1459410&r2=1459411&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-rm/src/main/java/org/apache/uima/ducc/rm/scheduler/RmJob.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-rm/src/main/java/org/apache/uima/ducc/rm/scheduler/RmJob.java Thu Mar 21 17:20:34 2013
@@ -993,11 +993,14 @@ public class RmJob
         //
         
         int base_cap = Math.min(getMaxShares(), c);
+        if ( base_cap < 0 ) base_cap = 0;          // capped by OR
+
         int projected_cap = getProjectedCap();       
 
         int potential_cap = base_cap;
         int actual_cap = 0;
 
+        
         if ( resource_class.isUsePrediction() ) {
             if (projected_cap < base_cap ) {                     // If we project less need, revise the estimate down
                 potential_cap = Math.max(projected_cap, assignedShares.size());