Author: burn
Date: Fri May  6 14:58:33 2016
New Revision: 1742550

URL: http://svn.apache.org/viewvc?rev=1742550&view=rev
Log:
UIMA-4582 Add defaults for process-init & work-item timeouts and improve 
handling of defaults

Modified:
    uima/sandbox/uima-ducc/trunk/src/main/resources/default.ducc.properties
    
uima/sandbox/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/NodeAgent.java
    
uima/sandbox/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/config/AgentConfiguration.java
    
uima/sandbox/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/event/ProcessLifecycleObserver.java
    
uima/sandbox/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/launcher/ManagedProcess.java
    
uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/CliBase.java
    
uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/CliFixups.java
    
uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/CommandLine.java
    
uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccJobSubmit.java
    
uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccServiceApi.java
    
uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/IUiOptions.java
    
uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/utils/DuccPropertiesResolver.java
    
uima/sandbox/uima-ducc/trunk/uima-ducc-duccdocs/src/site/tex/duccbook/part2/cli/ducc-submit.tex
    
uima/sandbox/uima-ducc/trunk/uima-ducc-duccdocs/src/site/tex/duccbook/part2/ducc-uguide.tex
    
uima/sandbox/uima-ducc/trunk/uima-ducc-duccdocs/src/site/tex/duccbook/part4/admin/ducc-properties.tex
    
uima/sandbox/uima-ducc/trunk/uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orchestrator/factory/JobFactory.java
    
uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/cli/JobRequestProperties.java
    
uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/DuccWorkPopDriver.java

Modified: 
uima/sandbox/uima-ducc/trunk/src/main/resources/default.ducc.properties
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/src/main/resources/default.ducc.properties?rev=1742550&r1=1742549&r2=1742550&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/src/main/resources/default.ducc.properties 
(original)
+++ uima/sandbox/uima-ducc/trunk/src/main/resources/default.ducc.properties Fri 
May  6 14:58:33 2016
@@ -225,6 +225,10 @@ ducc.jd.queue.prefix=ducc.jd.queue.
 # callbacks is normally sub-second. Intermittent network problems may cause 
unusual spikes.
 # If not specified, default value is 5 minutes.
 ducc.jd.queue.timeout.minutes=5
+# If not specified, default value is 24 hrs (24*60 minutes)
+ducc.default.process.per.item.time.max = 1440
+# If not specified, default max time in minutes allowed for AE initialization.
+ducc.default.process.init.time.max = 120
 #   The following 5 values comprise the specification used by the DUCC 
Orchestrator daemon to request an 
 #   allocation from the DUCC Resource Manager for Job Driver use. The values 
given below are the defaults.
 ducc.jd.host.class=JobDriver
@@ -251,6 +255,7 @@ ducc.jd.share.quantum.reserve.count = 3
 # Truncation is enforced beyond this limit.
 # If not specified, there is no limit.
 ducc.jd.workitem.name.maximum.length = 64
+
 # Extra JVM args to be appended to any user-supplied "driver_jvm_args"
 # Dynamic: changes to this property immediately affect new submitted work
 # Flag: -DUimaAsCasTracking will add to logs: 
@@ -440,7 +445,7 @@ ducc.agent.node.inventory.endpoint=ducc.
 # endpoint type choices[topic]
 ducc.agent.node.inventory.endpoint.type=topic
 # ducc.agent.launcher.thread.pool.size - Deprecated
-ducc.agent.launcher.thread.pool.size=10
+#ducc.agent.launcher.thread.pool.size=10
 # enable/disable use of ducc_ling
 # ducc.agent.launcher.use.ducc_spawn: true, use ducc_ling. Default: false
 ducc.agent.launcher.use.ducc_spawn=true
@@ -448,8 +453,8 @@ ducc.agent.launcher.use.ducc_spawn=true
 ducc.agent.launcher.ducc_spawn_path=${DUCC_HOME}/admin/${os.arch}/ducc_ling
 # Max amount of time (in millis) agent allows the process to stop before 
issuing kill -9
 ducc.agent.launcher.process.stop.timeout=60000
-# Max time in millis allowed for AE initialization. Default 2 hours 7200000.   
                                                              
-ducc.agent.launcher.process.init.timeout=7200000
+# Max time in millis allowed for AE initialization. Default 2 hours 7200000. - 
Deprecated
+#ducc.agent.launcher.process.init.timeout=7200000
 # exclude the following user ids while detecting rogue processes
 ducc.agent.rogue.process.user.exclusion.filter=
 #exclude the following processes while detecting rogue processes

Modified: 
uima/sandbox/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/NodeAgent.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/NodeAgent.java?rev=1742550&r1=1742549&r2=1742550&view=diff
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/NodeAgent.java
 (original)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/NodeAgent.java
 Fri May  6 14:58:33 2016
@@ -1411,12 +1411,11 @@ public class NodeAgent extends AbstractD
     }
   }
 
-  public void onJPInitTimeout(IDuccProcess process) {
+  public void onJPInitTimeout(IDuccProcess process, long timeout) {
     String methodName = "onJPInitTimeout";
     try {
       System.out.println("--------- Agent Timedout While Waiting For JP (PID:" 
+ process.getPID()
-              + ") to initialize. The JP exceeded configured timeout of "
-              + 
System.getProperty("ducc.agent.launcher.process.init.timeout"));
+              + ") to initialize. The JP exceeded configured timeout of " + 
timeout/(60*1000) + " minutes");
       ProcessStateUpdate processStateUpdate = new ProcessStateUpdate(
               ProcessState.InitializationTimeout, process.getPID(), 
process.getDuccId().getUnique());
       ProcessStateUpdateDuccEvent event = new 
ProcessStateUpdateDuccEvent(processStateUpdate);

Modified: 
uima/sandbox/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/config/AgentConfiguration.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/config/AgentConfiguration.java?rev=1742550&r1=1742549&r2=1742550&view=diff
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/config/AgentConfiguration.java
 (original)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/config/AgentConfiguration.java
 Fri May  6 14:58:33 2016
@@ -85,9 +85,11 @@ public class AgentConfiguration {
   
   private RouteBuilder inventoryRouteBuilder;
 
+  /* Deprecated
   @Value("#{ systemProperties['ducc.agent.launcher.thread.pool.size'] }")
   String launcherThreadPoolSize;
-
+   */
+  
   @Value("#{ systemProperties['ducc.agent.launcher.process.stop.timeout'] }")
   public String processStopTimeout;
 

Modified: 
uima/sandbox/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/event/ProcessLifecycleObserver.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/event/ProcessLifecycleObserver.java?rev=1742550&r1=1742549&r2=1742550&view=diff
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/event/ProcessLifecycleObserver.java
 (original)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/event/ProcessLifecycleObserver.java
 Fri May  6 14:58:33 2016
@@ -22,5 +22,5 @@ import org.apache.uima.ducc.transport.ev
 
 public interface ProcessLifecycleObserver {
        public void onProcessExit(IDuccProcess process);
-       public void onJPInitTimeout(IDuccProcess process);
+       public void onJPInitTimeout(IDuccProcess process, long timeout);
 }

Modified: 
uima/sandbox/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/launcher/ManagedProcess.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/launcher/ManagedProcess.java?rev=1742550&r1=1742549&r2=1742550&view=diff
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/launcher/ManagedProcess.java
 (original)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/launcher/ManagedProcess.java
 Fri May  6 14:58:33 2016
@@ -31,6 +31,7 @@ import org.apache.uima.ducc.agent.event.
 import org.apache.uima.ducc.agent.launcher.ManagedServiceInfo.ServiceState;
 import org.apache.uima.ducc.agent.processors.LinuxProcessMetricsProcessor;
 import org.apache.uima.ducc.common.utils.DuccLogger;
+import org.apache.uima.ducc.common.utils.DuccPropertiesResolver;
 import org.apache.uima.ducc.common.utils.id.DuccId;
 import org.apache.uima.ducc.transport.cmdline.ICommandLine;
 import org.apache.uima.ducc.transport.event.common.DuccProcess;
@@ -135,6 +136,8 @@ public class ManagedProcess implements P
 
        private volatile boolean isJD;
 
+       private long initializationTimeout;
+
        public ManagedProcess(IDuccProcess process, ICommandLine commandLine) {
                this(process, commandLine, null, null, new 
ProcessMemoryAssignment());
        }
@@ -656,7 +659,7 @@ public class ManagedProcess implements P
        public void notifyProcessObserver(ProcessState state) {
                if (observer != null && getDuccProcess() != null) {
                        if (ProcessState.InitializationTimeout.equals(state)) {
-                               observer.onJPInitTimeout(getDuccProcess());
+                               observer.onJPInitTimeout(getDuccProcess(), 
initializationTimeout);
                        } else {
                                getDuccProcess().setProcessState(state);
                                observer.onProcessExit(getDuccProcess());
@@ -671,9 +674,8 @@ public class ManagedProcess implements P
                try {
                        if (timeout == 0) {
                                String str_timeout;
-                               if ((str_timeout = System
-                                               
.getProperty("ducc.agent.launcher.process.init.timeout")) != null) {
-                                       timeout = Long.parseLong(str_timeout);
+                               if ((str_timeout = 
System.getProperty(DuccPropertiesResolver.ducc_default_process_init_time_max)) 
!= null) {
+                                       timeout = Long.parseLong(str_timeout) * 
60 * 1000;    // Minutes -> milliseconds
                                } else {
                                        // max init timeout default=4hours
                                        timeout = 3600 * 4 * 1000; 
@@ -684,6 +686,7 @@ public class ManagedProcess implements P
                }
                // timeout after 2 hours of initialization
                initTimer.schedule(new InitializationTask(), timeout); 
+               initializationTimeout = timeout;    // Save just for the 
timeout message
        }
 
        /**

Modified: 
uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/CliBase.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/CliBase.java?rev=1742550&r1=1742549&r2=1742550&view=diff
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/CliBase.java
 (original)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/CliBase.java
 Fri May  6 14:58:33 2016
@@ -371,7 +371,10 @@ public abstract class CliBase
         
         initConsoleListener();
 
-        dispatcher = DispatcherFactory.create(cli_props, servlet);
+        // AllInOne doesn't dispatch requests (and local doesn't need a 
running DUCC!)
+        if (!cli_props.containsKey(UiOption.AllInOne.pname())) {
+            dispatcher = DispatcherFactory.create(cli_props, servlet);
+        }
         
         init_done = true;
     }
@@ -424,6 +427,7 @@ public abstract class CliBase
      * Also fixup the environment for all that use it.
      */
     void setDefaults(IUiOption[] uiOpts, boolean suppress_console) throws 
Exception {
+        ArrayList<String> envNameList = new ArrayList<String>(0);   // Why 
this when are resolving against use caller's environment?
         for (IUiOption uiopt : uiOpts) {
             if (!cli_props.containsKey(uiopt.pname())) {
                 //
@@ -436,8 +440,17 @@ public abstract class CliBase
                 // similarly      - noargs() is definitely boolean, same 
treatement
                 //
                 if ( (! uiopt.optargs()) && (! uiopt.noargs() ) && 
uiopt.deflt() != null) {
-                    if (debug) System.out.println("CLI set default: " + 
uiopt.pname() + " = " + uiopt.deflt());
-                    cli_props.put(uiopt.pname(), uiopt.deflt());
+                    String deflt = uiopt.deflt();
+                    if (deflt.startsWith("$$")) {     // Lookup default in 
ducc.properties
+                        deflt = DuccPropertiesResolver.get(deflt.substring(2));
+                        if (deflt == null) {
+                            throw new IllegalArgumentException("Invalid 
default (undefined property) for " + uiopt.pname()); 
+                        }
+                    } else if (deflt.contains("${")) {
+                        deflt = resolvePlaceholders(deflt, envNameList);
+                    }
+                    if (debug) System.out.println("CLI set default: " + 
uiopt.pname() + " = " + deflt);
+                    cli_props.put(uiopt.pname(), deflt);
                 }
             } else {
                 //

Modified: 
uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/CliFixups.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/CliFixups.java?rev=1742550&r1=1742549&r2=1742550&view=diff
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/CliFixups.java
 (original)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/CliFixups.java
 Fri May  6 14:58:33 2016
@@ -38,6 +38,7 @@ import java.util.Properties;
  * 
  * For DUCC 2.1.0 changed:
  *   process_thread_count   ->  process_pipeline_count
+ *   process_get_meta_time_max - dropped (silently ignored)
  * Deprecated messages removed -- old options will be treated as aliases
  *   classpath_order will be silently accepted and ignored 
  *   number_of_instances is now rejected
@@ -67,6 +68,10 @@ public class CliFixups {
             } else if (arg.equals("--process_thread_count")) {
                 args[i] = "--process_pipeline_count";
                 //System.out.println("CLI replaced deprecated option: " + arg 
+ " with: " + args[i]);
+            } else if (arg.equals("--process_get_meta_time_max")) {
+                //System.out.println("CLI ignored deprecated option: " + arg);
+                args[i] = null;
+                if (++i < args.length && !args[i].startsWith("--")) args[i] = 
null; 
             }
         }
     }
@@ -85,6 +90,7 @@ public class CliFixups {
        if (val != null && val.trim().equals("1")) {
          changeOption("number_of_instances", null, props);  
        }
+        changeOption("process_get_meta_time_max", null, props);
     }
     
        static private void changeOption(String oldKey, String newKey, 
Properties props) {

Modified: 
uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/CommandLine.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/CommandLine.java?rev=1742550&r1=1742549&r2=1742550&view=diff
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/CommandLine.java
 (original)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/CommandLine.java
 Fri May  6 14:58:33 2016
@@ -24,6 +24,8 @@ import java.util.List;
 import java.util.Map;
 import java.util.Properties;
 
+import org.apache.uima.ducc.common.utils.DuccPropertiesResolver;
+
 public class CommandLine
 {
     private String[] args;                              // incoming args from 
java command line
@@ -220,14 +222,10 @@ public class CommandLine
         }
         
         List<String> pieces_parts = new ArrayList<String>();
-        int nparts = txt.length() / real_width;
-        if ( txt.length() % real_width > 0 ) {
-            nparts++;
-        }
-
-        for ( int i = 0; i < nparts-1; i++ ) {
-            pieces_parts.add(txt.substring(0, real_width));
-            txt = txt.substring(real_width);
+         while(txt.length() > real_width) {
+            int lastBlank = txt.lastIndexOf(' ', real_width);
+            pieces_parts.add(txt.substring(0, lastBlank));
+            txt = txt.substring(lastBlank+1);
         }
         pieces_parts.add(txt);
 
@@ -292,12 +290,25 @@ public class CommandLine
                 sb.append(" (required)");
             } 
             if ( o.optargs() ) {
-                sb.append(" Default:  ");
-                sb.append(o.deflt());
+                if ("true".equals(o.deflt())) {
+                    sb.append(" (optional boolean)");
+                } else {
+                    sb.append(" (optional)");
+                }
             }
             if ( o.noargs() ) {
                 sb.append(" (no arguments)");
             }
+            if ( o.deflt() != null && !o.deflt().isEmpty()) {
+                String deflt = o.deflt();
+                if (deflt.startsWith("$$")) {     // Lookup default in 
ducc.properties
+                    deflt = DuccPropertiesResolver.get(deflt.substring(2));
+                }
+                sb.append("\n");
+                sb.append(String.format(fmt2, ""));
+                sb.append("Default:  ");
+                sb.append(deflt);
+            }
             if ( o.description() != null ) {
                 sb.append("\n");
                 sb.append(justify(len+3,o.description()));

Modified: 
uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccJobSubmit.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccJobSubmit.java?rev=1742550&r1=1742549&r2=1742550&view=diff
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccJobSubmit.java
 (original)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccJobSubmit.java
 Fri May  6 14:58:33 2016
@@ -79,7 +79,6 @@ public class DuccJobSubmit
         UiOption.ProcessFailuresLimit,
         UiOption.ProcessPipelineCount,
         UiOption.ProcessPerItemTimeMax,
-        UiOption.ProcessGetMetaTimeMax,
         UiOption.ProcessInitializationTimeMax,
 
         UiOption.Specification,

Modified: 
uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccServiceApi.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccServiceApi.java?rev=1742550&r1=1742549&r2=1742550&view=diff
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccServiceApi.java
 (original)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccServiceApi.java
 Fri May  6 14:58:33 2016
@@ -173,6 +173,7 @@ public class DuccServiceApi
     }; 
     
     // These options are only valid for services with an explicit pinger
+    // Note: Only ServicePingArguments is used for an internal pinger ... 
others are quietly ignored
     UiOption[] pinger_only_options = {
             UiOption.ServicePingClasspath,
             UiOption.ServicePingJvmArgs,
@@ -779,7 +780,7 @@ public class DuccServiceApi
         CommandLine cl;
 
         cl = new CommandLine(null, registration_options);
-        System.out.println(cl.formatHelp("--------------- Registr Options 
-------------"));
+        System.out.println(cl.formatHelp("--------------- Register Options 
-------------"));
 
         cl = new CommandLine(null, unregister_options);
         System.out.println(cl.formatHelp("\n\n------------- Unregister Options 
------------------"));
@@ -793,7 +794,7 @@ public class DuccServiceApi
         cl = new CommandLine(null, modify_options);
         System.out.println(cl.formatHelp("\n\n------------- Modify Options 
------------------"));
 
-        cl = new CommandLine(null, modify_options);
+        cl = new CommandLine(null, query_options);
         System.out.println(cl.formatHelp("\n\n------------- Query Options 
------------------"));
 
         System.exit(1);

Modified: 
uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/IUiOptions.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/IUiOptions.java?rev=1742550&r1=1742549&r2=1742550&view=diff
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/IUiOptions.java
 (original)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/IUiOptions.java
 Fri May  6 14:58:33 2016
@@ -154,7 +154,7 @@ public interface IUiOptions
         
         DriverExceptionHandlerArguments { 
             public String pname()       { return 
JobSpecificationProperties.key_driver_exception_handler_arguments; }
-            public String argname()     { return "string"; }
+            public String argname()     { return "list of arguments"; }
             public String description() { return "Blank-delimited list of 
arguments to be passed to the built-in or custom exception handler.  The 
example gives the defaults for the built-in exception handler."; }
             public String example()     { return "max_job_errors=15 
max_timeout_retrys_per_workitem=0"; }
         },  
@@ -228,7 +228,8 @@ public interface IUiOptions
         LogDirectory { 
             public String pname()       { return 
JobSpecificationProperties.key_log_directory; }
             public String argname()     { return "path"; }
-            public String description() { return "The directory where logs are 
written.  Default: $HOME/ducc/logs"; }
+            public String description() { return "The directory where logs are 
written."; }
+            public String deflt()       { return "${HOME}/ducc/logs"; }
         },            
 
         Message { 
@@ -265,9 +266,9 @@ public interface IUiOptions
         
         Register    { 
             public String pname()       { return "register"; } 
-            public String argname()     { return "specification-file 
(optional)"; } 
+            public String argname()     { return "specification-file"; } 
             public boolean optargs()    { return true; }
-            public String deflt()       { return ""; }    // "" is correct
+            public String deflt()       { return ""; }    // No specification 
file
             public String description() { return "Register a service."; } 
         },
 
@@ -317,7 +318,8 @@ public interface IUiOptions
             public String pname()       { return "service_ping_timeout"; }
             public String argname()     { return "time-in-ms"; }
             public String description() { return "Time in milliseconds to wait 
for a ping to the service."; }
-            public String example()     { return "1000"; }
+            // public String deflt()       { return "500"; }   
+            // Avoid warning about ignored argument when using default pinger 
(but most ping arguments ignored for all internal pingers!)
         },            
 
         ServicePingDoLog { 
@@ -448,8 +450,9 @@ public interface IUiOptions
 
         ProcessDeploymentsMax { 
             public String pname()       { return 
JobSpecificationProperties.key_process_deployments_max; }
-            public String description() { return "Maximum number of processes 
dispatched for this job at any time.."; }
+            public String description() { return "Maximum number of processes 
dispatched for this job at any time"; }
             public String argname()     { return "integer"; }
+            public String deflt()       { return "unlimited"; }
         },            
 
         ProcessExecutable { 
@@ -474,22 +477,16 @@ public interface IUiOptions
             public String example()     { return "-a -t -l"; }
         },            
 
-        ProcessGetMetaTimeMax {
-            //public String pname()       { return 
JobSpecificationProperties.key_process_get_meta_time_max; }
-            public String pname()       { return "process_get_meta_time_max"; }
-            public String description() { return "Maximum elapsed time (in 
minutes) for processing getMeta."; }
-            public String argname()     { return "integer"; }
-        },            
-               
         ProcessInitializationTimeMax { 
             public String pname()       { return 
JobSpecificationProperties.key_process_initialization_time_max; }
             public String description() { return 
DuccUiConstants.desc_process_initialization_time_max; }
             public String argname()     { return "integer"; }
+            public String deflt()       { return 
"$$ducc.default.process.init.time.max"; }
         },     
                
         ProcessInitializationFailuresCap { 
             public String pname()       { return 
JobSpecificationProperties.key_process_initialization_failures_cap; }
-            public String description() { return "Number of unexpected job 
process initialization failures (i.e. System.exit(), kill-15...) before the 
number of Job Processes is capped at the number in state Running currently.  
Default is " + deflt() + "."; }
+            public String description() { return "Number of unexpected job 
process initialization failures (i.e. System.exit(), kill-15, ...) before the 
number of Job Processes is capped at the number currently Running."; }
             public String argname()     { return "integer"; }
             public String deflt()       { return "99"; }
         },            
@@ -526,13 +523,14 @@ public interface IUiOptions
             public String pname()       { return 
JobSpecificationProperties.key_process_per_item_time_max; }
             public String description() { return "Maximum elapsed time (in 
minutes) for processing one CAS."; }
             public String argname()     { return "integer"; }
+            public String deflt()       { return 
"$$ducc.default.process.per.item.time.max"; }
         },            
 
         Query       { 
             public String pname()       { return "query"; } 
-            public String argname()     { return "service-id-or-endpoint 
(optional)" ; } 
+            public String argname()     { return "service-id-or-endpoint" ; } 
             public boolean optargs()    { return true; }
-            public String deflt()       { return ""; }    // "" is correct, 
interpreted as all
+            public String deflt()       { return ""; }    // No service name 
=> all services
             public String description() { return "Query a registered service, 
or all." ; } 
         },
 
@@ -582,8 +580,8 @@ public interface IUiOptions
 
         ServiceDependency { 
             public String pname()       { return 
JobSpecificationProperties.key_service_dependency; }
-            public String argname()     { return "list"; }
-            public String description() { return "List of service descriptor 
strings."; }
+            public String argname()     { return "dependency list"; }
+            public String description() { return "List of blank-delimited 
service names."; }
             public String example()     { return 
"UIMA-AS:RandomSleepAE:tcp://node1:61616 CUSTOM:myservice";}
         },            
 

Modified: 
uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/utils/DuccPropertiesResolver.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/utils/DuccPropertiesResolver.java?rev=1742550&r1=1742549&r2=1742550&view=diff
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/utils/DuccPropertiesResolver.java
 (original)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/utils/DuccPropertiesResolver.java
 Fri May  6 14:58:33 2016
@@ -122,10 +122,9 @@ public class DuccPropertiesResolver {
     public static final String 
ducc_orchestrator_unmanaged_reservations_accepted = 
"ducc.orchestrator.unmanaged.reservations.accepted";  
     public static final String ducc_orchestrator_use_lock_file = 
"ducc.orchestrator.use.lock.file";  
     
-    public static final String default_process_get_meta_time_max = 
"default.process.get.meta.time.max";
-    public static final String ducc_agent_launcher_process_init_timeout = 
"ducc.agent.launcher.process.init.timeout";
-    public static final String default_process_per_item_time_max = 
"default.process.per.item.time.max";
-   
+    public static final String ducc_default_process_per_item_time_max = 
"ducc.default.process.per.item.time.max";
+    public static final String ducc_default_process_init_time_max = 
"ducc.default.process.init.time.max";
+    
     public static final String ducc_jd_host_class = "ducc.jd.host.class";
     public static final String ducc_jd_host_description = 
"ducc.jd.host.description";
     public static final String ducc_jd_host_memory_size = 
"ducc.jd.host.memory.size";
@@ -133,8 +132,6 @@ public class DuccPropertiesResolver {
     public static final String ducc_jd_host_user = "ducc.jd.host.user";
     
     public static final String ducc_jd_state_publish_rate = 
ducc_orchestrator_state_publish_rate;
-    public static final String ducc_jd_queue_prefix = "ducc.jd.queue.prefix";
-    public static final String ducc_jd_queue_timeout_minutes = 
"ducc.jd.queue.timeout.minutes";
     
     public static final String ducc_jd_configuration_class = 
"ducc.jd.configuration.class";
     public static final String ducc_jd_startup_initialization_error_limit = 
"ducc.jd.startup.initialization.error.limit";
@@ -178,9 +175,8 @@ public class DuccPropertiesResolver {
         defaultProperties.put(ducc_jms_provider,"activemq");
         
defaultProperties.put(ducc_orchestrator_state_update_endpoint,"ducc.orchestrator.state");
    
         
defaultProperties.put(ducc_orchestrator_state_update_endpoint_type,"topic");
-        defaultProperties.put(default_process_get_meta_time_max,"1");
-        
defaultProperties.put(ducc_agent_launcher_process_init_timeout,"7200000");
-        defaultProperties.put(default_process_per_item_time_max,"1");
+        defaultProperties.put(ducc_default_process_init_time_max,"1440");
+        defaultProperties.put(ducc_default_process_per_item_time_max,"1");
         defaultProperties.put(ducc_rm_share_quantum,"10");
         defaultProperties.put(ducc_jd_share_quantum,"300");
         defaultProperties.put(ducc_jd_share_quantum_reserve_count,"2");

Modified: 
uima/sandbox/uima-ducc/trunk/uima-ducc-duccdocs/src/site/tex/duccbook/part2/cli/ducc-submit.tex
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-duccdocs/src/site/tex/duccbook/part2/cli/ducc-submit.tex?rev=1742550&r1=1742549&r2=1742550&view=diff
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-duccdocs/src/site/tex/duccbook/part2/cli/ducc-submit.tex
 (original)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-duccdocs/src/site/tex/duccbook/part2/cli/ducc-submit.tex
 Fri May  6 14:58:33 2016
@@ -317,7 +317,7 @@ process_failures_limit              = 20
 driver_descriptor_CR                = 
org.apache.uima.ducc.test.randomsleep.FixedSleepCR 
 environment                         = AE_INIT_TIME=10000 UIMA 
LD_LIBRARY_PATH=/a/bogus/path
 log_directory                       = /home/bob/ducc/logs/ 
-process_thread_count                = 1 
+process_pipeline_count              = 1 
 driver_descriptor_CR_overrides      = jobfile:../simple/jobs/1.job 
compression:10 
 process_initialization_failures_cap = 99 
 process_per_item_time_max           = 60 

Modified: 
uima/sandbox/uima-ducc/trunk/uima-ducc-duccdocs/src/site/tex/duccbook/part2/ducc-uguide.tex
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-duccdocs/src/site/tex/duccbook/part2/ducc-uguide.tex?rev=1742550&r1=1742549&r2=1742550&view=diff
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-duccdocs/src/site/tex/duccbook/part2/ducc-uguide.tex
 (original)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-duccdocs/src/site/tex/duccbook/part2/ducc-uguide.tex
 Fri May  6 14:58:33 2016
@@ -52,7 +52,7 @@ driver_jvm_args                -Xmx500M
 process_descriptor_AE          
org.apache.uima.ducc.test.randomsleep.FixedSleepAE
 process_memory_size            4
 process_jvm_args               -Xmx100M 
-process_thread_count           2
+process_pipeline_count         2
 process_per_item_time_max      5
 process_deployments_max        999
 

Modified: 
uima/sandbox/uima-ducc/trunk/uima-ducc-duccdocs/src/site/tex/duccbook/part4/admin/ducc-properties.tex
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-duccdocs/src/site/tex/duccbook/part4/admin/ducc-properties.tex?rev=1742550&r1=1742549&r2=1742550&view=diff
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-duccdocs/src/site/tex/duccbook/part4/admin/ducc-properties.tex
 (original)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-duccdocs/src/site/tex/duccbook/part4/admin/ducc-properties.tex
 Fri May  6 14:58:33 2016
@@ -630,7 +630,7 @@
 \subsection{Job Driver Properties}
     \begin{description}
         \item[ducc.jd.configuration.class] \hfill \\
-          The name of the pluggable java class used to implement the Job 
Driver. 
+          The name of the pluggable java class used to implement the Job 
Driver (JD). 
           \begin{description}
             \item[Default Value] 
org.apache.uima.ducc.jd.config.JobDriverConfiguration 
             \item[Type] Private 
@@ -644,7 +644,7 @@
           \end{description}
             
         \item[ducc.jd.startup.initialization.error.limit] \hfill \\
-          For a newly started Job, the number of JP UIMA initialization 
failures
+          For a newly started Job, the number of Job Process (JP) 
initialization failures
           allowed until at least one JP succeeds - otherwise, the Job 
self-destructs.
           \begin{description}
             \item[Default Value] 1     
@@ -695,7 +695,7 @@
           The error handler class employed when work items fail or time-out in 
order
           to determine what to do next in three dimensions: 
           job kill or continue, process kill or continue, work item kill or 
continue.
-          User specified --driver_exception_handler <class> prevails.
+          User specified $--$driver\_exception\_handler <class> prevails.
           \begin{description}
             \item[Default Value] org.apache.uima.ducc.ErrorHandler
             \item[Type] Local
@@ -704,12 +704,34 @@
         \item[ducc.jd.error.handler.args] \hfill \\
           The error handler args passed to the error handler class (see above).
           These values, if any, are combined with any specified by the user.
-          Individual user specified --driver_exception_handler_arguments 
<args> 
+          Individual user specified $--$driver\_exception\_handler\_arguments 
<args> 
           prevail.
           \begin{description}
-            \item[Default Value] max_job_errors=15 
max_timeout_retrys_per_workitem=0
+            \item[Default Value] max\_job\_errors=15 
max\_timeout\_retrys\_per\_workitem=0
             \item[Type] Local
           \end{description}
+
+        \item[ducc.default.process.per.item.time.max] \hfill \\
+          This property specifies the default value for the time, in minutes, 
that the JD should
+          wait for a work-item to be processed. If processing has not 
completed in this time the 
+          process is terminated and the job's error handler decides whether to 
retry the
+          work-item or not.
+          \begin{description}
+            \item[Default Value] 1440
+            \item[Type] Local
+          \end{description}
+
+        \item[ducc.default.process.init.time.max] \hfill \\
+          This property specifies the default value for the time, in minutes, 
that the agent should
+          wait for a JP to complete initialization. If initialization is not 
completed in this time
+          the process is terminated and and InitializationTimeout status is 
send to the JD 
+          which decides whether to retry the process or terminate the job. 
+
+          \begin{description}
+          \item[Default Value] 120
+          \item[Type] Local 
+          \end{description}
+
           
       \end{description}
       
@@ -1314,6 +1336,7 @@
             \item[Default Value] 10 
             \item[Type] Tuning 
           \end{description}
+          Deprecated.
                     
         \item[ducc.agent.launcher.ducc\_spawn\_path] \hfill \\
           This property specifies the full path to the ducc\_ling utility. 
During installation ducc\_ling 
@@ -1352,6 +1375,7 @@
           \item[Default Value] 7200000 
           \item[Type] Tuning 
           \end{description}
+          Deprecated. Replaced by ducc.default.process.init.time.max (in 
minutes)
           
 
         \item[ducc.agent.share.size.fudge.factor] \hfill \\

Modified: 
uima/sandbox/uima-ducc/trunk/uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orchestrator/factory/JobFactory.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orchestrator/factory/JobFactory.java?rev=1742550&r1=1742549&r2=1742550&view=diff
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orchestrator/factory/JobFactory.java
 (original)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orchestrator/factory/JobFactory.java
 Fri May  6 14:58:33 2016
@@ -285,9 +285,9 @@ public class JobFactory implements IJobF
                String wiTimeout = 
jobRequestProperties.getProperty(JobSpecificationProperties.key_process_per_item_time_max);
                if(wiTimeout == null) {
                        DuccPropertiesResolver duccPropertiesResolver = 
DuccPropertiesResolver.getInstance();
-                       wiTimeout = 
duccPropertiesResolver.getFileProperty(DuccPropertiesResolver.default_process_per_item_time_max);
+                       wiTimeout = 
duccPropertiesResolver.getFileProperty(DuccPropertiesResolver.ducc_default_process_per_item_time_max);
                }
-               addDashD(jcl, FlagsHelper.Name.WorkItemTimeout, 
jobRequestProperties.getProperty(JobSpecificationProperties.key_process_per_item_time_max));
            
+               addDashD(jcl, FlagsHelper.Name.WorkItemTimeout, wiTimeout);
                // add JpDdDirectory    
                addDashD(jcl, FlagsHelper.Name.JobDirectory, 
jobRequestProperties.getProperty(JobSpecificationProperties.key_log_directory));
                // add Jp aggregate construction  from pieces-parts (Jp DD 
should be null)
@@ -358,32 +358,18 @@ public class JobFactory implements IJobF
        
        private void createDriver(CommonConfiguration common, 
JobRequestProperties jobRequestProperties,  DuccWorkJob job) throws 
ResourceUnavailableForJobDriverException {
                String methodName = "createDriver";
-               DuccPropertiesResolver duccPropertiesResolver = 
DuccPropertiesResolver.getInstance();
                // broker & queue
                job.setJobBroker(common.brokerUrl);
                job.setJobQueue(common.jdQueuePrefix+job.getDuccId());
-               // CR
-               String crxml = 
jobRequestProperties.getProperty(JobSpecificationProperties.key_driver_descriptor_CR);
-               String crcfg = 
jobRequestProperties.getProperty(JobSpecificationProperties.key_driver_descriptor_CR_overrides);
-               // getMeta
-               String meta_time = 
duccPropertiesResolver.getFileProperty(DuccPropertiesResolver.default_process_get_meta_time_max);
-               // lost
-               String lost_time = 
duccPropertiesResolver.getFileProperty(DuccPropertiesResolver.ducc_jd_queue_timeout_minutes);
-               // process_per_item_time_max
-               String wi_time = 
jobRequestProperties.getProperty(JobRequestProperties.key_process_per_item_time_max);
-               if(wi_time == null) {
-                       wi_time = 
duccPropertiesResolver.getFileProperty(DuccPropertiesResolver.default_process_per_item_time_max);
-               }
-               // Exception handler
-               String processExceptionHandler = 
jobRequestProperties.getProperty(JobRequestProperties.key_driver_exception_handler);
+
                // Command line
-               DuccWorkPopDriver driver = new 
DuccWorkPopDriver(job.getjobBroker(), job.getjobQueue(), crxml, crcfg, 
meta_time, lost_time, wi_time, processExceptionHandler);
                JavaCommandLine driverCommandLine = 
buildJobDriverCommandLine(jobRequestProperties, job.getDuccId());
                // Environment
                String driverEnvironmentVariables = 
jobRequestProperties.getProperty(JobSpecificationProperties.key_environment);
                int envCountDriver = addEnvironment(job, "driver", 
driverCommandLine, driverEnvironmentVariables);
                logger.info(methodName, job.getDuccId(), "driver env vars: 
"+envCountDriver);
                logger.debug(methodName, job.getDuccId(), "driver: 
"+driverCommandLine.getCommand());
+               DuccWorkPopDriver driver = new DuccWorkPopDriver();    // No 
longer need the 8-arg constructor
                driver.setCommandLine(driverCommandLine);
                //
                DuccId jdId = jdIdFactory.next();
@@ -482,7 +468,7 @@ public class JobFactory implements IJobF
                // sweep out leftover logging trash
                
logSweeper(jobRequestProperties.getProperty(JobRequestProperties.key_log_directory),
 job.getDuccId());
                // log
-               jobRequestProperties.specification(logger);
+               jobRequestProperties.specification(logger, job.getDuccId());
                // java command
                String javaCmd = 
jobRequestProperties.getProperty(JobSpecificationProperties.key_jvm);
                if(javaCmd == null) {
@@ -529,10 +515,10 @@ public class JobFactory implements IJobF
                    checkSchedulingLimits(job, schedulingInfo);
                }
                
-               // process_initialization_time_max
+               // process_initialization_time_max (in minutes)
                String pi_time = 
jobRequestProperties.getProperty(JobRequestProperties.key_process_initialization_time_max);
                if(pi_time == null) {
-                       pi_time = 
DuccPropertiesResolver.getInstance().getFileProperty(DuccPropertiesResolver.ducc_agent_launcher_process_init_timeout);
+                       pi_time = 
DuccPropertiesResolver.get(DuccPropertiesResolver.ducc_default_process_init_time_max);
                }
                try {
                        long value = Long.parseLong(pi_time)*60*1000;

Modified: 
uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/cli/JobRequestProperties.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/cli/JobRequestProperties.java?rev=1742550&r1=1742549&r2=1742550&view=diff
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/cli/JobRequestProperties.java
 (original)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/cli/JobRequestProperties.java
 Fri May  6 14:58:33 2016
@@ -24,6 +24,7 @@ import java.util.Enumeration;
 import java.util.List;
 
 import org.apache.uima.ducc.common.utils.DuccLogger;
+import org.apache.uima.ducc.common.utils.id.DuccId;
 
 
 /**
@@ -84,13 +85,13 @@ public class JobRequestProperties extend
                key_service_dependency
                );
        
-       public void specification(DuccLogger logger) {
+       public void specification(DuccLogger logger, DuccId id) {
                String methodName = "specification";
                Enumeration<Object> keys = keys();
                while(keys.hasMoreElements()) {
                        String key = (String) keys.nextElement();
                        String value = getProperty(key);
-                       logger.info(methodName, null, key+":"+value);
+                       logger.info(methodName, id, key+":"+value);
                }
        }
        

Modified: 
uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/DuccWorkPopDriver.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/DuccWorkPopDriver.java?rev=1742550&r1=1742549&r2=1742550&view=diff
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/DuccWorkPopDriver.java
 (original)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/DuccWorkPopDriver.java
 Fri May  6 14:58:33 2016
@@ -33,6 +33,7 @@ public class DuccWorkPopDriver extends D
                private String wiTimeout = null;
                private String processExceptionHandler = null;
                
+               // This constructor no longer needed
                public DuccWorkPopDriver(String serverUri, String endPoint, 
String cr, String crConfig, String metaTimeout, String lostTimeout, String 
wiTimeout, String processExceptionHandler) {
                        this.serverUri = serverUri;
                        this.endPoint = endPoint;
@@ -44,6 +45,9 @@ public class DuccWorkPopDriver extends D
                        this.processExceptionHandler = processExceptionHandler;
                }
                
+               public DuccWorkPopDriver() {
+               }
+
                public String getServerUri() {
                        return serverUri;
                }



Reply via email to