Author: cwiklik
Date: Mon Jul 30 14:43:05 2018
New Revision: 1837063

URL: http://svn.apache.org/viewvc?rev=1837063&view=rev
Log:
UIMA-5843 added error window support

Modified:
    
uima/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccJobSubmit.java
    
uima/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/IUiOptions.java
    
uima/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/container/FlagsHelper.java
    
uima/uima-ducc/trunk/uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orchestrator/factory/JobFactory.java
    
uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/ServiceConfiguration.java
    
uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/processor/uima/AbstractServiceProcessor.java
    
uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/processor/uima/UimaAsServiceProcessor.java
    
uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/processor/uima/UimaProcessResult.java
    
uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/processor/uima/UimaServiceProcessor.java
    
uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/cli/JobSpecificationProperties.java

Modified: 
uima/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccJobSubmit.java
URL: 
http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccJobSubmit.java?rev=1837063&r1=1837062&r2=1837063&view=diff
==============================================================================
--- 
uima/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccJobSubmit.java
 (original)
+++ 
uima/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccJobSubmit.java
 Mon Jul 30 14:43:05 2018
@@ -80,6 +80,8 @@ public class DuccJobSubmit
         UiOption.ProcessInitializationFailuresCap,
         UiOption.ProcessFailuresLimit,
         UiOption.ProcessPipelineCount,
+        UiOption.ProcessErrorWindowThreshold,
+        UiOption.ProcessErrorWindowSize,
         UiOption.ProcessPerItemTimeMax,
         UiOption.ProcessInitializationTimeMax,
 
@@ -163,6 +165,7 @@ public class DuccJobSubmit
     {
         init (this.getClass().getName(), opts, args, jobRequestProperties, 
consoleCb);
         check_descriptor_options();
+        check_error_window_definition();
         if (isAllInOne()) {
             allInOneLauncher = new AllInOneLauncher(userSpecifiedProperties, 
consoleCb);  // Pass the already fixed-up user properties
         }
@@ -182,12 +185,43 @@ public class DuccJobSubmit
         throws Exception
     {
         init (this.getClass().getName(), opts, props, jobRequestProperties, 
consoleCb);
+        
         check_descriptor_options();
+        check_error_window_definition();
         if (isAllInOne()) {
             allInOneLauncher = new AllInOneLauncher(userSpecifiedProperties, 
consoleCb);  // Pass the already fixed-up user properties
         }
     }
-
+    private void check_error_window_definition() throws 
IllegalArgumentException {
+       int windowSize=0;
+       int maxThreshold=0;
+       
+               boolean errorWindowSizeDefined = 
jobRequestProperties.containsKey(UiOption.ProcessErrorWindowSize.pname());
+               boolean errorWindowThresholdDefined = 
jobRequestProperties.containsKey(UiOption.ProcessErrorWindowThreshold.pname());
+
+               if ( errorWindowSizeDefined ) {
+                       try {
+                               windowSize = 
jobRequestProperties.getIntProperty(UiOption.ProcessErrorWindowSize.pname());
+                       } catch( NumberFormatException e) {
+                               throw new 
IllegalArgumentException("process_error_window_size must be a postive number - 
you've provided:"+
+                                               
jobRequestProperties.getIntProperty(UiOption.ProcessErrorWindowSize.pname()));
+                       } 
+               }
+               if ( errorWindowThresholdDefined ) {
+                       try {
+                               maxThreshold = 
jobRequestProperties.getIntProperty(UiOption.ProcessErrorWindowThreshold.pname());
+                       } catch( NumberFormatException e) {
+                               throw new 
IllegalArgumentException("process_error_window_threshold must be a postive 
number - you've provided:"+
+                                               
jobRequestProperties.getIntProperty(UiOption.ProcessErrorWindowThreshold.pname()));
+                       }
+               }
+               if ( maxThreshold > windowSize   ) {
+                       throw new 
IllegalArgumentException("process_error_window_threshold must be smaller/equal 
than/to process_error_window_size - you've provided:"+
+                                       " 
process_error_window_threshold="+jobRequestProperties.getIntProperty(UiOption.ProcessErrorWindowThreshold.pname())
 +
+                                       " 
process_error_window_size="+jobRequestProperties.getIntProperty(UiOption.ProcessErrorWindowSize.pname()));
+                       
+               }
+    }
     /*
      * If preemptable change to a non-preemptable scheduling class.
      * If none provided use the default fixed class

Modified: 
uima/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/IUiOptions.java
URL: 
http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/IUiOptions.java?rev=1837063&r1=1837062&r2=1837063&view=diff
==============================================================================
--- 
uima/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/IUiOptions.java
 (original)
+++ 
uima/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/IUiOptions.java
 Mon Jul 30 14:43:05 2018
@@ -517,7 +517,20 @@ public interface IUiOptions
             public String description() { return "Number of pipelines per 
process (i.e. simultaneously processed work-items)."; }
             public String argname()     { return "integer"; }
             public String deflt()       { return "4"; }
-        },            
+        },   
+        ProcessErrorWindowThreshold { 
+            public String pname()       { return 
JobSpecificationProperties.key_process_error_threshold; }
+            public String description() { return "Maximum number of process 
errors per process."; }
+            public String argname()     { return "integer"; }
+            public String deflt()       { return "1"; }
+        },  
+
+        ProcessErrorWindowSize { 
+            public String pname()       { return 
JobSpecificationProperties.key_process_error_window; }
+            public String description() { return "Size of error window used in 
conjuntion with maximum number of process errors."; }
+            public String argname()     { return "integer"; }
+            public String deflt()       { return "1"; }
+        },  
 
         ProcessPerItemTimeMax { 
             public String pname()       { return 
JobSpecificationProperties.key_process_per_item_time_max; }

Modified: 
uima/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/container/FlagsHelper.java
URL: 
http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/container/FlagsHelper.java?rev=1837063&r1=1837062&r2=1837063&view=diff
==============================================================================
--- 
uima/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/container/FlagsHelper.java
 (original)
+++ 
uima/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/container/FlagsHelper.java
 Mon Jul 30 14:43:05 2018
@@ -48,6 +48,8 @@ public class FlagsHelper {
                JpCmOverrides,
                JpDd,
                JpThreadCount,
+               JpErrorThreshold,
+               JpErrorWindowSize,
                JpType,                                         // { uima, 
uima-as }
                JpProcessorClass("processor.class"),
                UserClasspath,                          // 
path1.class:path2.jar:path3/*:...

Modified: 
uima/uima-ducc/trunk/uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orchestrator/factory/JobFactory.java
URL: 
http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orchestrator/factory/JobFactory.java?rev=1837063&r1=1837062&r2=1837063&view=diff
==============================================================================
--- 
uima/uima-ducc/trunk/uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orchestrator/factory/JobFactory.java
 (original)
+++ 
uima/uima-ducc/trunk/uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orchestrator/factory/JobFactory.java
 Mon Jul 30 14:43:05 2018
@@ -641,6 +641,15 @@ public class JobFactory implements IJobF
                                // </flags for JP to build Aggregate>
                        }
 
+                       String process_error_threshold = 
jobRequestProperties.getProperty(JobSpecificationProperties.key_process_error_threshold);
+                       if(process_error_threshold != null) {
+                               addDashD(pipelineCommandLine, 
FlagsHelper.Name.JpErrorThreshold, process_error_threshold);
+                       }
+                       String process_error_window = 
jobRequestProperties.getProperty(JobSpecificationProperties.key_process_error_window);
+                       if(process_error_window != null) {
+                               addDashD(pipelineCommandLine, 
FlagsHelper.Name.JpErrorWindowSize, process_error_window);
+                       }
+                       
                        String process_thread_count = 
jobRequestProperties.getProperty(JobSpecificationProperties.key_process_pipeline_count);
                        if(process_thread_count != null) {
                                addDashD(pipelineCommandLine, 
FlagsHelper.Name.JpThreadCount, process_thread_count);

Modified: 
uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/ServiceConfiguration.java
URL: 
http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/ServiceConfiguration.java?rev=1837063&r1=1837062&r2=1837063&view=diff
==============================================================================
--- 
uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/ServiceConfiguration.java
 (original)
+++ 
uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/ServiceConfiguration.java
 Mon Jul 30 14:43:05 2018
@@ -20,6 +20,7 @@
 package org.apache.uima.ducc.ps.service;
 
 import org.apache.uima.ducc.ps.service.errors.ServiceInitializationException;
+import org.apache.uima.ducc.ps.service.jmx.JMXAgent;
 
 public class ServiceConfiguration {
        private String clientURL;
@@ -47,7 +48,14 @@ public class ServiceConfiguration {
        private String maxErrors;
        private String errorWindowSize;
        private ClassLoader sysCL=null;
-
+    private String processType;
+    
+       public String getProcessType() {
+               return processType;
+       }
+       public void setProcessType(String processType) {
+               this.processType = processType;
+       }
        public String getMaxErrors() {
                return maxErrors;
        }
@@ -240,7 +248,7 @@ public class ServiceConfiguration {
                serviceJmxConnectURL = System.getProperty("ducc.jmx.port");
                customRegistryClass = 
System.getProperty("ducc.deploy.registry.class");
                customProcessorClass = 
System.getProperty("ducc.deploy.custom.processor.class");
-
+               processType = 
System.getProperty("ducc.deploy.components");//=job-process
                duccHome = System.getenv("DUCC_HOME");
                jobId = System.getenv("DUCC_JOBID");
                duccProcessId = System.getenv("DUCC_PROCESSID");

Modified: 
uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/processor/uima/AbstractServiceProcessor.java
URL: 
http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/processor/uima/AbstractServiceProcessor.java?rev=1837063&r1=1837062&r2=1837063&view=diff
==============================================================================
--- 
uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/processor/uima/AbstractServiceProcessor.java
 (original)
+++ 
uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/processor/uima/AbstractServiceProcessor.java
 Mon Jul 30 14:43:05 2018
@@ -37,8 +37,10 @@ public class AbstractServiceProcessor {
        protected int maxErrors=1;  // default is to fail on 1st error
        protected int windowSize=1;
     protected int DEFAULT_INIT_DELAY=30000;
-    
-       protected IServiceErrorHandler getErrorHandler() {
+
+
+       protected IServiceErrorHandler getErrorHandler(Logger logger) {
+               logger.log(Level.INFO, "Error Handler Configuration: 
threshold="+maxErrors+" windowSize="+windowSize);
                // concrete implementation of this abstract class should
                // provide a way to set maxErrors and windowSize. The 
IServiceProcessor
                // provides a setter method for overriding default values 
@@ -66,4 +68,7 @@ public class AbstractServiceProcessor {
                return serializerMap.get(Thread.currentThread().getId());
        }
 
+       protected void stop() throws Exception {
+       
+       }
 }

Modified: 
uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/processor/uima/UimaAsServiceProcessor.java
URL: 
http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/processor/uima/UimaAsServiceProcessor.java?rev=1837063&r1=1837062&r2=1837063&view=diff
==============================================================================
--- 
uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/processor/uima/UimaAsServiceProcessor.java
 (original)
+++ 
uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/processor/uima/UimaAsServiceProcessor.java
 Mon Jul 30 14:43:05 2018
@@ -107,6 +107,7 @@ public class UimaAsServiceProcessor exte
        public UimaAsServiceProcessor(String[] args, ServiceConfiguration 
serviceConfiguration) {
                this.args = args;
                this.serviceConfiguration = serviceConfiguration;
+
                // start a thread which will collect AE initialization state
                launchStateInitializationCollector();
        }
@@ -162,7 +163,7 @@ public class UimaAsServiceProcessor exte
                        }
                        // Needed to resolve ${queue.name} placeholder in DD 
generated by DUCC
                        System.setProperty(queuePropertyName, endpointName);
-                       errorHandler = getErrorHandler();
+                       errorHandler = getErrorHandler(logger);
 
                        // generate Spring context file once
                        synchronized (UimaAsServiceProcessor.class) {
@@ -462,6 +463,7 @@ public class UimaAsServiceProcessor exte
                                        Method waitMethod = 
classToLaunch.getMethod("waitUntilStopped");
                                        waitMethod.invoke(brokerInstance);
                                        brokerRunning = false;
+                                       super.stop();
 
                                } catch (Exception e) {
                                        logger.log(Level.WARNING, "stop", e);

Modified: 
uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/processor/uima/UimaProcessResult.java
URL: 
http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/processor/uima/UimaProcessResult.java?rev=1837063&r1=1837062&r2=1837063&view=diff
==============================================================================
--- 
uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/processor/uima/UimaProcessResult.java
 (original)
+++ 
uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/processor/uima/UimaProcessResult.java
 Mon Jul 30 14:43:05 2018
@@ -55,5 +55,9 @@ public class UimaProcessResult implement
                exception.printStackTrace(new PrintWriter(sw));
                return sw.toString();
        }
+       @Override
+       public Exception getExceptionObject() {
+               return exception;
+       }
 
 }

Modified: 
uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/processor/uima/UimaServiceProcessor.java
URL: 
http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/processor/uima/UimaServiceProcessor.java?rev=1837063&r1=1837062&r2=1837063&view=diff
==============================================================================
--- 
uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/processor/uima/UimaServiceProcessor.java
 (original)
+++ 
uima/uima-ducc/trunk/uima-ducc-pullservice/src/main/java/org/apache/uima/ducc/ps/service/processor/uima/UimaServiceProcessor.java
 Mon Jul 30 14:43:05 2018
@@ -143,7 +143,7 @@ public class UimaServiceProcessor extend
                        logger.log(Level.FINE, "Process Thread:"+ 
Thread.currentThread().getName()+" Initializing AE");
                        
                }
-               errorHandler = getErrorHandler();
+               errorHandler = getErrorHandler(logger);
                
                try {
                        // multiple threads may call this method. Send 
initializing state once
@@ -282,6 +282,8 @@ public class UimaServiceProcessor extend
                        if ( ae != null ) {
                                ae.destroy();
                        }
+                       super.stop();
+
                } catch( Exception e) {
                        logger.log(Level.WARNING, "stop", e);
                } 

Modified: 
uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/cli/JobSpecificationProperties.java
URL: 
http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/cli/JobSpecificationProperties.java?rev=1837063&r1=1837062&r2=1837063&view=diff
==============================================================================
--- 
uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/cli/JobSpecificationProperties.java
 (original)
+++ 
uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/cli/JobSpecificationProperties.java
 Mon Jul 30 14:43:05 2018
@@ -65,6 +65,8 @@ public class JobSpecificationProperties
        public static String key_process_initialization_failures_cap = 
"process_initialization_failures_cap";
        public static String key_process_failures_limit = 
"process_failures_limit";
        public static String key_process_pipeline_count = 
"process_pipeline_count";
+       public static String key_process_error_threshold = 
"process_error_window_threshold";
+       public static String key_process_error_window = 
"process_error_window_size";
        
        /*
        public static String key_process_get_meta_time_max = 
"process_get_meta_time_max";


Reply via email to