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;
}