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/08/29 21:06:37 UTC

svn commit: r1758301 - in /uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common: DuccProcessConcurrentMap.java DuccProcessHelper.java DuccProcessMap.java IDuccProcess.java

Author: degenaro
Date: Mon Aug 29 21:06:37 2016
New Revision: 1758301

URL: http://svn.apache.org/viewvc?rev=1758301&view=rev
Log:
UIMA-5079 DUCC Orchestrator (OR) handle Agent no reason given for process termination

Added:
    uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/DuccProcessHelper.java   (with props)
Modified:
    uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/DuccProcessConcurrentMap.java
    uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/DuccProcessMap.java
    uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/IDuccProcess.java

Modified: uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/DuccProcessConcurrentMap.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/DuccProcessConcurrentMap.java?rev=1758301&r1=1758300&r2=1758301&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/DuccProcessConcurrentMap.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/DuccProcessConcurrentMap.java Mon Aug 29 21:06:37 2016
@@ -28,7 +28,6 @@ import org.apache.uima.ducc.common.NodeI
 import org.apache.uima.ducc.common.utils.DuccLogger;
 import org.apache.uima.ducc.common.utils.id.DuccId;
 import org.apache.uima.ducc.transport.Constants;
-import org.apache.uima.ducc.transport.event.common.IDuccProcess.ReasonForStoppingProcess;
 import org.apache.uima.ducc.transport.event.common.IProcessState.ProcessState;
 
 public class DuccProcessConcurrentMap extends ConcurrentHashMap<DuccId,IDuccProcess> implements IDuccProcessMap {
@@ -236,47 +235,6 @@ public class DuccProcessConcurrentMap ex
 		}
 	}
 
-	public static boolean isUserFailureReasonForStoppingProcess(String reason) {
-		boolean retVal = false;
-		if(reason != null) {
-			if(reason.equals(ReasonForStoppingProcess.Croaked.name())) {
-				retVal = true;
-			}
-			else if(reason.equals(ReasonForStoppingProcess.ExceededShareSize.name())) {
-				retVal = true;
-			}
-			else if(reason.equals(ReasonForStoppingProcess.ExceededSwapThreshold.name())) {
-				retVal = true;
-			}
-			else if(reason.equals(ReasonForStoppingProcess.ExceededErrorThreshold.name())) {
-				retVal = true;
-			}
-		}
-		return retVal;
-	}
-	
-	/**
-	 * Determine if Process has failed due to User or Framework.
-	 * Note that Framework attributed Process failures are not
-	 * counted toward the maximum number of failures allowed
-	 * before the Job is forcibly terminated.
-	 * 
-	 * @param process is the IDuccProcess to consider
-	 * @return true if User or false if Framework
-	 */
-	private boolean isFailedProcess(IDuccProcess process) {
-		boolean retVal = false;
-		ProcessState processState = process.getProcessState();
-		String reason = process.getReasonForStoppingProcess();
-		switch(processState) {
-		case Failed:
-		case Stopped:
-		case Killed:
-			retVal = isUserFailureReasonForStoppingProcess(reason);
-		}
-		return retVal;
-	}
-	
 	// <UIMA-3489>
 	private boolean isFailedInitialization(IDuccProcess process) {
 		boolean retVal = false;
@@ -316,7 +274,7 @@ public class DuccProcessConcurrentMap ex
 					if(isFailedInitialization(process)) {
 						list.add(process.getDuccId());
 					}
-					else if(isFailedProcess(process)) {
+					else if(DuccProcessHelper.isFailedProcess(process)) {
 						list.add(process.getDuccId());
 					}
 				}
@@ -332,7 +290,7 @@ public class DuccProcessConcurrentMap ex
 			while(iterator.hasNext()) {
 				IDuccProcess process = iterator.next();
 				if(process.isInitialized()) {
-					if(isFailedProcess(process)) {
+					if(DuccProcessHelper.isFailedProcess(process)) {
 						list.add(process.getDuccId());
 					}
 				}

Added: uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/DuccProcessHelper.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/DuccProcessHelper.java?rev=1758301&view=auto
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/DuccProcessHelper.java (added)
+++ uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/DuccProcessHelper.java Mon Aug 29 21:06:37 2016
@@ -0,0 +1,94 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+*/
+package org.apache.uima.ducc.transport.event.common;
+
+import org.apache.uima.ducc.transport.event.common.IDuccProcess.ReasonForStoppingProcess;
+import org.apache.uima.ducc.transport.event.common.IProcessState.ProcessState;
+
+public class DuccProcessHelper {
+
+	/**
+	 * Determine if Process has failed due to User or Framework.
+	 * Note that Framework attributed Process failures are not
+	 * counted toward the maximum number of failures allowed
+	 * before the Job is forcibly terminated.
+	 * 
+	 * @param process is the IDuccProcess to consider
+	 * @return true if User or false if Framework
+	 */
+	public static boolean isFailedProcess(IDuccProcess process) {
+		boolean retVal = false;
+		if(process != null) {
+			ProcessState processState = process.getProcessState();
+			switch(processState) {
+			case Failed:
+			case Stopped:
+			case Killed:
+				normalizeReasonForStoppingProcess(process);
+				retVal = DuccProcessHelper.isUserFailureReasonForStoppingProcess(process);
+			}
+		}
+		return retVal;
+	}
+
+	private static String normalizeReasonForStoppingProcess(IDuccProcess process) {
+		String retVal = IDuccProcess.ReasonForStoppingProcess.Unexplained.name();
+		if(process != null) {
+			String reason = process.getReasonForStoppingProcess();
+			if(reason != null) {
+				if(reason.trim().length() > 0) {
+					retVal = reason;
+				}
+				else {
+					process.setReasonForStoppingProcess(retVal);
+				}
+			}
+			else {
+				process.setReasonForStoppingProcess(retVal);
+			}
+		}
+		return retVal;
+	}
+	
+	public static boolean isUserFailureReasonForStoppingProcess(IDuccProcess process) {
+		boolean retVal = false;
+		if(process != null) {
+			String reason = process.getReasonForStoppingProcess();
+			if(reason != null) {
+				if(reason.equals(ReasonForStoppingProcess.Croaked.name())) {
+					retVal = true;
+				}
+				else if(reason.equals(ReasonForStoppingProcess.ExceededShareSize.name())) {
+					retVal = true;
+				}
+				else if(reason.equals(ReasonForStoppingProcess.ExceededSwapThreshold.name())) {
+					retVal = true;
+				}
+				else if(reason.equals(ReasonForStoppingProcess.ExceededErrorThreshold.name())) {
+					retVal = true;
+				}
+				else if(reason.equals(ReasonForStoppingProcess.Unexplained.name())) {
+					retVal = true;
+				}
+			}
+		}
+		return retVal;
+	}
+	
+}

Propchange: uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/DuccProcessHelper.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/DuccProcessHelper.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/DuccProcessMap.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/DuccProcessMap.java?rev=1758301&r1=1758300&r2=1758301&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/DuccProcessMap.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/DuccProcessMap.java Mon Aug 29 21:06:37 2016
@@ -28,7 +28,6 @@ import org.apache.uima.ducc.common.NodeI
 import org.apache.uima.ducc.common.utils.DuccLogger;
 import org.apache.uima.ducc.common.utils.id.DuccId;
 import org.apache.uima.ducc.transport.Constants;
-import org.apache.uima.ducc.transport.event.common.IDuccProcess.ReasonForStoppingProcess;
 import org.apache.uima.ducc.transport.event.common.IProcessState.ProcessState;
 
 public class DuccProcessMap extends TreeMap<DuccId,IDuccProcess> implements IDuccProcessMap {
@@ -241,38 +240,6 @@ public class DuccProcessMap extends Tree
 			return (IDuccProcessMap) SerializationUtils.clone(this);
 		}
 	}
-
-	public static boolean isUserFailureReasonForStoppingProcess(String reason) {
-		boolean retVal = false;
-		if(reason != null) {
-			if(reason.equals(ReasonForStoppingProcess.Croaked.name())) {
-				retVal = true;
-			}
-			else if(reason.equals(ReasonForStoppingProcess.ExceededShareSize.name())) {
-				retVal = true;
-			}
-			else if(reason.equals(ReasonForStoppingProcess.ExceededSwapThreshold.name())) {
-				retVal = true;
-			}
-			else if(reason.equals(ReasonForStoppingProcess.ExceededErrorThreshold.name())) {
-				retVal = true;
-			}
-		}
-		return retVal;
-	}
-	
-	private boolean isFailedProcess(IDuccProcess process) {
-		boolean retVal = false;
-		ProcessState processState = process.getProcessState();
-		String reason = process.getReasonForStoppingProcess();
-		switch(processState) {
-		case Failed:
-		case Stopped:
-		case Killed:
-			retVal = isUserFailureReasonForStoppingProcess(reason);
-		}
-		return retVal;
-	}
 	
 	// <UIMA-3489>
 	private boolean isFailedInitialization(IDuccProcess process) {
@@ -313,7 +280,7 @@ public class DuccProcessMap extends Tree
 					if(isFailedInitialization(process)) {
 						list.add(process.getDuccId());
 					}
-					else if(isFailedProcess(process)) {
+					else if(DuccProcessHelper.isFailedProcess(process)) {
 						list.add(process.getDuccId());
 					}
 				}
@@ -329,7 +296,7 @@ public class DuccProcessMap extends Tree
 			while(iterator.hasNext()) {
 				IDuccProcess process = iterator.next();
 				if(process.isInitialized()) {
-					if(isFailedProcess(process)) {
+					if(DuccProcessHelper.isFailedProcess(process)) {
 						list.add(process.getDuccId());
 					}
 				}

Modified: uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/IDuccProcess.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/IDuccProcess.java?rev=1758301&r1=1758300&r2=1758301&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/IDuccProcess.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/IDuccProcess.java Mon Aug 29 21:06:37 2016
@@ -122,6 +122,7 @@ public interface IDuccProcess extends Se
 		ExceededErrorThreshold,
 		KilledByDucc,
 		CommandLineMissing,
+		Unexplained,
 		Other
 	}