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/03/05 14:14:36 UTC

svn commit: r1664338 - /uima/sandbox/uima-ducc/trunk/uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orchestrator/StateManager.java

Author: degenaro
Date: Thu Mar  5 13:14:36 2015
New Revision: 1664338

URL: http://svn.apache.org/r1664338
Log:
UIMA-4069 DUCC Job Driver (JD) system classpath

honor startup initialization error limit

Modified:
    uima/sandbox/uima-ducc/trunk/uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orchestrator/StateManager.java

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orchestrator/StateManager.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orchestrator/StateManager.java?rev=1664338&r1=1664337&r2=1664338&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orchestrator/StateManager.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orchestrator/StateManager.java Thu Mar  5 13:14:36 2015
@@ -1559,6 +1559,39 @@ public class StateManager {
 									break;
 								case Job_Uima_AS_Process:
 									OrchestratorCommonArea.getInstance().getProcessAccounting().setStatus(inventoryProcess);
+									try {
+										if(!job.isInitialized()) {
+											IDuccProcessMap map = job.getProcessMap();
+											for(Entry<DuccId, IDuccProcess> entry : map.entrySet()) {
+												IDuccProcess process = entry.getValue();
+												StringBuffer sb = new StringBuffer();
+												sb.append("pid:"+process.getPID()+" ");
+												sb.append("state:"+process.getProcessState()+" ");
+												sb.append("reason:"+process.getReasonForStoppingProcess()+" ");
+												logger.info(methodName, job.getDuccId(), sb.toString());
+											}
+											long initFailureCount = job.getProcessInitFailureCount();
+											long startup_initialization_error_limit = DuccPropertiesResolver.get(DuccPropertiesResolver.ducc_jd_startup_initialization_error_limit, 1);
+											if(initFailureCount >= startup_initialization_error_limit) {
+												String reason = "process inititialization failure count["+initFailureCount+"] meets startup initialization error limit["+startup_initialization_error_limit+"]";
+												logger.warn(methodName, job.getDuccId(), reason);
+												JobCompletionType jobCompletionType = JobCompletionType.CanceledBySystem;
+												Rationale rationale = new Rationale(reason);
+												ProcessDeallocationType processDeallocationType = ProcessDeallocationType.JobCanceled;
+												stateManager.jobTerminate(job, jobCompletionType, rationale, processDeallocationType);
+											}
+											else {
+												String reason = "process failure count["+initFailureCount+"] does not exceed startup initialization error limit["+startup_initialization_error_limit+"]";
+												logger.debug(methodName, job.getDuccId(), reason);
+											}
+										}
+										else {
+											logger.trace(methodName, job.getDuccId(), "job is initialized");
+										}
+									}
+									catch(Exception e) {
+										logger.error(methodName, jobId, e);
+									}
 									break;
 								}
 								// <UIMA-3923>