You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by de...@apache.org on 2015/06/12 12:46:41 UTC

svn commit: r1685060 - /uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/ActionEndTimeout.java

Author: degenaro
Date: Fri Jun 12 10:46:41 2015
New Revision: 1685060

URL: http://svn.apache.org/r1685060
Log:
UIMA-4459 DUCC Job Driver (JD) does not advance state to JdState.Ended when final work item is a time-out

Modified:
    uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/ActionEndTimeout.java

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/ActionEndTimeout.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/ActionEndTimeout.java?rev=1685060&r1=1685059&r2=1685060&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/ActionEndTimeout.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/ActionEndTimeout.java Fri Jun 12 10:46:41 2015
@@ -38,6 +38,7 @@ import org.apache.uima.ducc.container.jd
 import org.apache.uima.ducc.container.jd.wi.IWorkItem;
 import org.apache.uima.ducc.container.jd.wi.WiTracker;
 import org.apache.uima.ducc.container.net.iface.IMetaCas;
+import org.apache.uima.ducc.container.net.iface.IMetaCasTransaction.JdState;
 
 public class ActionEndTimeout extends Action implements IAction {
 
@@ -48,12 +49,40 @@ public class ActionEndTimeout extends Ac
 		return ActionEndTimeout.class.getName();
 	}
 	
+	private void jdExhausted(IActionData actionData) {
+		String location = "jdExhausted";
+		JobDriver jd = JobDriver.getInstance();
+		switch(jd.getJdState()) {
+		case Ended:
+			break;
+		default:
+			jd.advanceJdState(JdState.Ended);
+			MessageBuffer mb = LoggerHelper.getMessageBuffer(actionData);
+			mb.append(Standardize.Label.jdState.get()+JobDriver.getInstance().getJdState());
+			logger.info(location, ILogger.null_id, mb.toString());
+			JobDriverHelper.getInstance().summarize();
+			break;
+		}
+	}
+	
+	private void checkEnded(IActionData actionData, CasManager cm) {
+		String location = "checkEnded";
+		int remainder = cm.getCasManagerStats().getUnfinishedWorkCount();
+		MessageBuffer mb = LoggerHelper.getMessageBuffer(actionData);
+		mb.append(Standardize.Label.remainder.get()+remainder);
+		logger.debug(location, ILogger.null_id, mb.toString());
+		if(remainder <= 0) {
+			jdExhausted(actionData);
+		}
+	}
+	
 	private void killWorkItem(IActionData actionData, CasManager cm, IMetaCas metaCas, IWorkItem wi) {
 		String location = "killWorkItem";
 		MessageBuffer mb = LoggerHelper.getMessageBuffer(actionData);
 		logger.info(location, ILogger.null_id, mb.toString());
 		WiTracker.getInstance().unassign(wi);
 		cm.getCasManagerStats().incEndFailure();
+		checkEnded(actionData, cm);
 	}
 	
 	private void killProcess(IActionData actionData, CasManager cm, IMetaCas metaCas, IWorkItem wi, DeallocateReason deallocateReason) {