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());