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 2016/03/29 21:19:00 UTC

svn commit: r1737034 - in /uima/sandbox/uima-ducc/trunk: uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/ uima-ducc-user/src/main/java/org/apache/uima/ducc/ uima-ducc-user/src/test/java/org/apache/uima/ducc/user/jd/test/

Author: degenaro
Date: Tue Mar 29 19:19:00 2016
New Revision: 1737034

URL: http://svn.apache.org/viewvc?rev=1737034&view=rev
Log:
UIMA-4879 DUCC Job Driver (WS) should terminate Job Process (JP) when workitem timeout occurs

Modified:
    uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/ActionEndAbstract.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/ActionHelper.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-user/src/main/java/org/apache/uima/ducc/ErrorHandlerDirective.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-user/src/test/java/org/apache/uima/ducc/user/jd/test/TestSuite.java

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/ActionEndAbstract.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/ActionEndAbstract.java?rev=1737034&r1=1737033&r2=1737034&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/ActionEndAbstract.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/ActionEndAbstract.java Tue Mar 29 19:19:00 2016
@@ -22,6 +22,7 @@ import org.apache.uima.ducc.common.jd.fi
 import org.apache.uima.ducc.container.common.MessageBuffer;
 import org.apache.uima.ducc.container.common.MetaCasHelper;
 import org.apache.uima.ducc.container.common.Standardize;
+import org.apache.uima.ducc.container.common.IJdConstants.DeallocateReason;
 import org.apache.uima.ducc.container.common.fsm.iface.IAction;
 import org.apache.uima.ducc.container.common.logger.IComponent;
 import org.apache.uima.ducc.container.common.logger.ILogger;
@@ -48,6 +49,12 @@ public abstract class ActionEndAbstract
 		this.logger = logger;
 	}
 	
+	private DeallocateReason getDeallocateReason(ProxyJobDriverDirective pjdd) {
+		// ToDo - determine reason (for now presume timeout)
+		DeallocateReason deallocateReason = DeallocateReason.WorkItemTimeout;
+		return deallocateReason;
+	}
+	
 	protected void handleException(IActionData actionData, Object userException, String printableException) throws JobDriverException {
 		String location = "handleException";
 		if(true) {
@@ -101,6 +108,13 @@ public abstract class ActionEndAbstract
 				ActionHelper.killJob(logger, actionData, cm);
 				ActionHelper.killWorkItem(logger, actionData, cm);
 			}
+			else if(pjdd.isKillProcess()) {
+				wisk.error(seqNo);
+				pStats.error(wi);
+				DeallocateReason deallocateReason = getDeallocateReason(pjdd);
+				ActionHelper.killProcess(logger, actionData, cm, metaCas, wi, deallocateReason);
+				ActionHelper.killWorkItem(logger, actionData, cm);
+			}
 			else if(pjdd.isKillWorkItem()) {
 				wisk.error(seqNo);
 				pStats.error(wi);

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/ActionHelper.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/ActionHelper.java?rev=1737034&r1=1737033&r2=1737034&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/ActionHelper.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/ActionHelper.java Tue Mar 29 19:19:00 2016
@@ -18,6 +18,9 @@
 */
 package org.apache.uima.ducc.container.jd.fsm.wi;
 
+import org.apache.uima.ducc.common.jd.files.workitem.IRemoteLocation;
+import org.apache.uima.ducc.common.jd.files.workitem.RemoteLocation;
+import org.apache.uima.ducc.container.common.IJdConstants.DeallocateReason;
 import org.apache.uima.ducc.container.common.MessageBuffer;
 import org.apache.uima.ducc.container.common.Standardize;
 import org.apache.uima.ducc.container.common.logger.ILogger;
@@ -28,7 +31,10 @@ import org.apache.uima.ducc.container.jd
 import org.apache.uima.ducc.container.jd.cas.CasManagerStats.RetryReason;
 import org.apache.uima.ducc.container.jd.log.ErrorLogger;
 import org.apache.uima.ducc.container.jd.log.LoggerHelper;
+import org.apache.uima.ducc.container.jd.mh.iface.remote.IRemoteWorkerProcess;
 import org.apache.uima.ducc.container.jd.timeout.TimeoutManager;
+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;
 
@@ -104,8 +110,8 @@ public class ActionHelper {
 	// for example, very long running work items are not unnecessarily 
 	// restarted from scratch.
 	
-	/*
-	private static void killProcess(Logger logger, IActionData actionData, CasManager cm, IMetaCas metaCas, IWorkItem wi, DeallocateReason deallocateReason) {
+	
+	protected static void killProcess(Logger logger, IActionData actionData, CasManager cm, IMetaCas metaCas, IWorkItem wi, DeallocateReason deallocateReason) {
 		String location = "killProcess";
 		WiTracker tracker = WiTracker.getInstance();
 		IRemoteWorkerProcess rwp = tracker.getRemoteWorkerProcess(wi);
@@ -126,7 +132,6 @@ public class ActionHelper {
 			logger.info(location, ILogger.null_id, mb.toString());
 		}
 	}
-	*/
 	
 	protected static void killJob(Logger logger, IActionData actionData, CasManager cm) {
 		String location = "killJob";

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-user/src/main/java/org/apache/uima/ducc/ErrorHandlerDirective.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-user/src/main/java/org/apache/uima/ducc/ErrorHandlerDirective.java?rev=1737034&r1=1737033&r2=1737034&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-user/src/main/java/org/apache/uima/ducc/ErrorHandlerDirective.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-user/src/main/java/org/apache/uima/ducc/ErrorHandlerDirective.java Tue Mar 29 19:19:00 2016
@@ -21,7 +21,7 @@ package org.apache.uima.ducc;
 public class ErrorHandlerDirective implements IErrorHandlerDirective {
 
 	private boolean killJob = false;
-	private boolean killProcess = false;
+	private boolean killProcess = true;
 	private boolean killWorkItem = true;
 	
 	public ErrorHandlerDirective() {

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-user/src/test/java/org/apache/uima/ducc/user/jd/test/TestSuite.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-user/src/test/java/org/apache/uima/ducc/user/jd/test/TestSuite.java?rev=1737034&r1=1737033&r2=1737034&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-user/src/test/java/org/apache/uima/ducc/user/jd/test/TestSuite.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-user/src/test/java/org/apache/uima/ducc/user/jd/test/TestSuite.java Tue Mar 29 19:19:00 2016
@@ -222,7 +222,7 @@ public class TestSuite {
 			String serializedCAS = null;
 			IErrorHandlerDirective directive = eh.handle(serializedCAS, getUserException());
 			assertTrue(directive.isKillJob() == false);
-			assertTrue(directive.isKillProcess() == false);
+			assertTrue(directive.isKillProcess() == true);
 			assertTrue(directive.isKillWorkItem() == true);
 		}
 		catch(Exception e) {
@@ -256,13 +256,13 @@ public class TestSuite {
 			eh = new ErrorHandler();
 			directive = eh.handle(serializedCAS, getUserException());
 			assertTrue(directive.isKillJob() == false);
-			assertTrue(directive.isKillProcess() == false);
+			assertTrue(directive.isKillProcess() == true);
 			assertTrue(directive.isKillWorkItem() == true);
 			//
 			eh = new ErrorHandler();
 			directive = eh.handle(serializedCAS, getUserException());
 			assertTrue(directive.isKillJob() == false);
-			assertTrue(directive.isKillProcess() == false);
+			assertTrue(directive.isKillProcess() == true);
 			assertTrue(directive.isKillWorkItem() == true);
 			//
 			limit = 15;
@@ -271,12 +271,12 @@ public class TestSuite {
 			for(int i=1; i<limit; i++) {
 				directive = eh.handle(serializedCAS, getUserException());
 				assertTrue(directive.isKillJob() == false);
-				assertTrue(directive.isKillProcess() == false);
+				assertTrue(directive.isKillProcess() == true);
 				assertTrue(directive.isKillWorkItem() == true);
 			}
 			directive = eh.handle(serializedCAS, getUserException());
 			assertTrue(directive.isKillJob() == true);
-			assertTrue(directive.isKillProcess() == false);
+			assertTrue(directive.isKillProcess() == true);
 			assertTrue(directive.isKillWorkItem() == true);
 			//
 			limit = 10;
@@ -286,12 +286,12 @@ public class TestSuite {
 			for(int i=1; i<limit; i++) {
 				directive = eh.handle(serializedCAS, getUserException());
 				assertTrue(directive.isKillJob() == false);
-				assertTrue(directive.isKillProcess() == false);
+				assertTrue(directive.isKillProcess() == true);
 				assertTrue(directive.isKillWorkItem() == true);
 			}
 			directive = eh.handle(serializedCAS, getUserException());
 			assertTrue(directive.isKillJob() == true);
-			assertTrue(directive.isKillProcess() == false);
+			assertTrue(directive.isKillProcess() == true);
 			assertTrue(directive.isKillWorkItem() == true);
 			//
 			limit = 20;
@@ -301,12 +301,12 @@ public class TestSuite {
 			for(int i=1; i<limit; i++) {
 				directive = eh.handle(serializedCAS, getUserException());
 				assertTrue(directive.isKillJob() == false);
-				assertTrue(directive.isKillProcess() == false);
+				assertTrue(directive.isKillProcess() == true);
 				assertTrue(directive.isKillWorkItem() == true);
 			}
 			directive = eh.handle(serializedCAS, getUserException());
 			assertTrue(directive.isKillJob() == true);
-			assertTrue(directive.isKillProcess() == false);
+			assertTrue(directive.isKillProcess() == true);
 			assertTrue(directive.isKillWorkItem() == true);
 		}
 		catch(Exception e) {