Author: degenaro
Date: Fri May 31 21:10:22 2013
New Revision: 1488400

URL: http://svn.apache.org/r1488400
Log:
UIMA-2956 DUCC orchestrator (OR) incorrectly replaces "ServiceUnavailable" with 
"DriverInitializationFailure"

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=1488400&r1=1488399&r2=1488400&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
 Fri May 31 21:10:22 2013
@@ -356,6 +356,52 @@ public class StateManager {
                }
        }
        
+       private void setCompletionIfNotAlreadySet(DuccWorkJob duccWorkJob, 
DriverStatusReport jdStatusReport) {
+               String methodName = "setCompletionIfNotAlreadySet";
+               DuccId jobid = null;
+               try {
+                       jobid = duccWorkJob.getDuccId();
+                       setCompletionIfNotAlreadySet(jobid, duccWorkJob, 
jdStatusReport.getJobCompletionType(), 
jdStatusReport.getJobCompletionRationale());
+               }
+               catch(Exception e) {
+                       logger.error(methodName, jobid, e);
+               }
+       }
+       
+       private void setCompletionIfNotAlreadySet(DuccWorkJob duccWorkJob, 
JobCompletionType jobCompletionType, IRationale rationale) {
+               String methodName = "setCompletionIfNotAlreadySet";
+               DuccId jobid = null;
+               try {
+                       jobid = duccWorkJob.getDuccId();
+                       setCompletionIfNotAlreadySet(jobid, duccWorkJob, 
jobCompletionType,rationale);
+               }
+               catch(Exception e) {
+                       logger.error(methodName, jobid, e);
+               }
+       }
+       
+       private void setCompletionIfNotAlreadySet(DuccId jobid, DuccWorkJob 
duccWorkJob, JobCompletionType reqJobCompletionType, IRationale reqRationale) {
+               String methodName = "setCompletionIfNotAlreadySet";
+               logger.trace(methodName, null, messages.fetch("enter"));
+               try {
+                       JobCompletionType curJobCompletionType = 
duccWorkJob.getCompletionType();
+                       switch(curJobCompletionType) {
+                       case Undefined:
+                               duccWorkJob.setCompletion(reqJobCompletionType, 
reqRationale);
+                               logger.debug(methodName, jobid, "changed: 
"+curJobCompletionType+" to "+reqJobCompletionType);
+                               break;
+                       default:
+                               logger.debug(methodName, jobid, "unchanged: 
"+curJobCompletionType+" to "+reqJobCompletionType);
+                               break;
+                       }
+                       
+               }
+               catch(Exception e) {
+                       logger.error(methodName, jobid, e);
+               }
+               logger.trace(methodName, null, messages.fetch("exit"));
+       }
+       
        /**
         * JD reconciliation
         */
@@ -458,18 +504,24 @@ public class StateManager {
                                                        
duccWorkJob.getStandardInfo().setDateOfCompletion(TimeStamp.getCurrentMillis());
                                                        
switch(jdStatusReport.getJobCompletionType()) {
                                                        case EndOfJob:
-                                                               
duccWorkJob.setCompletion(JobCompletionType.EndOfJob, new Rationale("state 
manager detected normal completion"));
                                                                try {
                                                                        int 
errors = Integer.parseInt(duccWorkJob.getSchedulingInfo().getWorkItemsError());
                                                                        
if(errors > 0) {
-                                                                               
duccWorkJob.setCompletion(JobCompletionType.Error, new Rationale("state manager 
detected errors="+errors));
+                                                                               
setCompletionIfNotAlreadySet(duccWorkJob, JobCompletionType.Error, new 
Rationale("state manager detected errors="+errors));
+                                                                       }
+                                                                       else {
+                                                                               
setCompletionIfNotAlreadySet(duccWorkJob, JobCompletionType.EndOfJob, new 
Rationale("state manager detected normal completion"));
                                                                        }
                                                                }
                                                                catch(Exception 
e) {
+                                                                       
logger.error(methodName, duccId, e);
+                                                               }
+                                                               finally {
+                                                                       
setCompletionIfNotAlreadySet(duccWorkJob, JobCompletionType.EndOfJob, new 
Rationale("state manager detected normal completion"));
                                                                }
                                                                break;
                                                        default:
-                                                               
duccWorkJob.setCompletion(jdStatusReport.getJobCompletionType(),jdStatusReport.getJobCompletionRationale());
+                                                               
setCompletionIfNotAlreadySet(duccWorkJob, jdStatusReport);
                                                                break;
                                                        }
                                                }


Reply via email to