You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by de...@apache.org on 2018/01/04 18:32:54 UTC
svn commit: r1820175 - in /uima/uima-ducc/trunk: src/main/admin/
uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/
uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/config/
uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orches...
Author: degenaro
Date: Thu Jan 4 18:32:54 2018
New Revision: 1820175
URL: http://svn.apache.org/viewvc?rev=1820175&view=rev
Log:
UIMA-5693 DUCC Orchestrator (OR) system logger should track Agent BOOT and SHUTDOWN
Modified:
uima/uima-ducc/trunk/src/main/admin/start_ducc
uima/uima-ducc/trunk/src/main/admin/stop_ducc
uima/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/NodeAgent.java
uima/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/config/AgentConfiguration.java
uima/uima-ducc/trunk/uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orchestrator/OrchestratorComponent.java
uima/uima-ducc/trunk/uima-ducc-pm/src/main/java/org/apache/uima/ducc/pm/ProcessManagerComponent.java
uima/uima-ducc/trunk/uima-ducc-pm/src/main/java/org/apache/uima/ducc/pm/config/ProcessManagerConfiguration.java
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/WebServerComponent.java
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/config/WebServerConfiguration.java
Modified: uima/uima-ducc/trunk/src/main/admin/start_ducc
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/src/main/admin/start_ducc?rev=1820175&r1=1820174&r2=1820175&view=diff
==============================================================================
--- uima/uima-ducc/trunk/src/main/admin/start_ducc (original)
+++ uima/uima-ducc/trunk/src/main/admin/start_ducc Thu Jan 4 18:32:54 2018
@@ -359,6 +359,21 @@ class StartDucc(DuccUtil):
print "Starting", n_nodes, "agents"
self.threadpool = ThreadPool(n_nodes + 5) # a few more for the head processes
self.pidlock = threading.Lock()
+
+ #start 'or' first to field system log requests
+ if ( len(components) != 0 ):
+ for com in components:
+ if ( com in ('or') ):
+ try:
+ self.threadpool.invoke(self.start_component, ducc, com, or_parms)
+ #self.start_component(ducc, com, or_parms)
+ except:
+ self.threadpool.quit()
+ print sys.exc_info()[0], "DUCC may not be started correctly."
+ sys.exit(1)
+ # give 'or' a small head start
+ time.sleep(2)
+
for (nodefile, nodelist) in nodes.items():
print '********** Starting agents from file', nodefile
try:
@@ -373,7 +388,7 @@ class StartDucc(DuccUtil):
print 'Starting', or_parms
for com in components:
- if ( com in ('broker', 'db') ):
+ if ( com in ('broker', 'db', 'or') ):
pass # already started
else:
try:
Modified: uima/uima-ducc/trunk/src/main/admin/stop_ducc
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/src/main/admin/stop_ducc?rev=1820175&r1=1820174&r2=1820175&view=diff
==============================================================================
--- uima/uima-ducc/trunk/src/main/admin/stop_ducc (original)
+++ uima/uima-ducc/trunk/src/main/admin/stop_ducc Thu Jan 4 18:32:54 2018
@@ -311,17 +311,26 @@ class StopDucc(DuccUtil):
if ( quiesce ):
self.quiesce_agents(components, nodes)
else:
+ for (nf, nl) in nodes.items():
+ for n in nl:
+ self.stop_agents(n, force)
host = self.localhost.split('.')[0]
for c in components:
c = c.strip()
- if(c in ('or','pm','rm','sm','ws')):
+ if(c in ('pm','rm','sm','ws')):
+ c = c+'@'+host
+ self.stop_component(c, force)
+ time.sleep(2)
+ for c in components:
+ c = c.strip()
+ if(c in ('or')):
c = c+'@'+host
+ self.stop_component(c, force)
+ time.sleep(2)
+ for c in components:
+ c = c.strip()
if(c in ('db','broker')):
- time.sleep(2)
- self.stop_component(c, force)
- for (nf, nl) in nodes.items():
- for n in nl:
- self.stop_agents(n, force)
+ self.stop_component(c, force)
if ( read_pids ):
if ( len(self.pids) > 0 ):
Modified: uima/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/NodeAgent.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/NodeAgent.java?rev=1820175&r1=1820174&r2=1820175&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/NodeAgent.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/NodeAgent.java Thu Jan 4 18:32:54 2018
@@ -67,6 +67,7 @@ import org.apache.uima.ducc.common.node.
import org.apache.uima.ducc.common.utils.DuccLogger;
import org.apache.uima.ducc.common.utils.TimeStamp;
import org.apache.uima.ducc.common.utils.Utils;
+import org.apache.uima.ducc.common.utils.IDuccLoggerComponents.Daemon;
import org.apache.uima.ducc.common.utils.id.DuccId;
import org.apache.uima.ducc.common.utils.id.IDuccId;
import org.apache.uima.ducc.transport.agent.IUimaPipelineAEComponent;
@@ -76,6 +77,8 @@ import org.apache.uima.ducc.transport.cm
import org.apache.uima.ducc.transport.dispatcher.DuccEventDispatcher;
import org.apache.uima.ducc.transport.event.AgentProcessLifecycleReportDuccEvent;
import org.apache.uima.ducc.transport.event.AgentProcessLifecycleReportDuccEvent.LifecycleEvent;
+import org.apache.uima.ducc.transport.event.DuccEvent.EventType;
+import org.apache.uima.ducc.transport.event.DaemonDuccEvent;
import org.apache.uima.ducc.transport.event.DuccEvent;
import org.apache.uima.ducc.transport.event.NodeInventoryUpdateDuccEvent;
import org.apache.uima.ducc.transport.event.ProcessStateUpdateDuccEvent;
@@ -131,7 +134,7 @@ public class NodeAgent extends AbstractD
private DuccEventDispatcher commonProcessDispatcher;
- private DuccEventDispatcher inventoryDispatcher;
+ private DuccEventDispatcher ORDispatcher;
private Object monitor = new Object();
@@ -187,6 +190,13 @@ public class NodeAgent extends AbstractD
// from the PM. This flag is used to determine if the agent should use
// rogue process detector. The detector will be used if this flag is true.
public volatile boolean receivedDuccState = false;
+
+ private String stateChangeEndpoint;
+
+ public void setStateChangeEndpoint(String stateChangeEndpoint) {
+ this.stateChangeEndpoint = stateChangeEndpoint;
+ }
+
/**
* Ctor used exclusively for black-box testing of this class.
*/
@@ -222,11 +232,28 @@ public class NodeAgent extends AbstractD
return retVal;
}
+ /**
+ * Tell Orchestrator about state change for recording into system-events.log
+ */
+ private void stateChange(EventType eventType) {
+ String methodName = "stateChange";
+ try {
+ Daemon daemon = Daemon.Agent;
+ NodeIdentity nodeIdentity = new NodeIdentity();
+ DaemonDuccEvent ev = new DaemonDuccEvent(daemon, eventType, nodeIdentity);
+ ORDispatcher.dispatch(stateChangeEndpoint, ev, "");
+ logger.info(methodName, null, stateChangeEndpoint, eventType.name(), nodeIdentity.getName());
+ }
+ catch(Exception e) {
+ logger.error(methodName, null, e);
+ }
+ }
+
/*
* Report process lifecycle events on same channel that inventory is reported
*/
public DuccEventDispatcher getProcessLifecycleReportDispatcher() {
- return inventoryDispatcher;
+ return ORDispatcher;
}
/*
@@ -321,7 +348,7 @@ public class NodeAgent extends AbstractD
this.launcher = launcher;
this.configurationFactory = factory;
this.commonProcessDispatcher = factory.getCommonProcessDispatcher(context);
- this.inventoryDispatcher = factory.getORDispatcher(context);
+ this.ORDispatcher = factory.getORDispatcher(context);
// fetch Page Size from the OS and cache it
pageSize = getOSPageSize();
@@ -600,6 +627,7 @@ public class NodeAgent extends AbstractD
String key = "ducc.broker.url";
String value = System.getProperty(key);
logger.info(methodName, null, key+"="+value);
+ stateChange(EventType.BOOT);
}
public DuccEventDispatcher getEventDispatcherForRemoteProcess() {
@@ -1924,9 +1952,10 @@ public class NodeAgent extends AbstractD
HashMap<DuccId, IDuccProcess> emptyMap =
new HashMap<DuccId, IDuccProcess>();
DuccEvent duccEvent = new NodeInventoryUpdateDuccEvent(emptyMap,getLastORSequence(), getIdentity());
- inventoryDispatcher.dispatch(duccEvent);
+ ORDispatcher.dispatch(duccEvent);
logger.info("stop", null, "Agent published final inventory");
-
+ stateChange(EventType.SHUTDOWN);
+
configurationFactory.stopRoutes();
logger.info("stop", null, "Agent stopping managed processes");
Modified: uima/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/config/AgentConfiguration.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/config/AgentConfiguration.java?rev=1820175&r1=1820174&r2=1820175&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/config/AgentConfiguration.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/config/AgentConfiguration.java Thu Jan 4 18:32:54 2018
@@ -454,6 +454,8 @@ public class AgentConfiguration {
AgentEventListener delegateListener = agentDelegateListener(agent);
agent.setAgentEventListener(delegateListener);
+
+ agent.setStateChangeEndpoint(common.daemonsStateChangeEndpoint);
// Create server to receive status update from APs. The JPs report their status
// via a Camel Mina-based route. The APs report to a different port handled
Modified: uima/uima-ducc/trunk/uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orchestrator/OrchestratorComponent.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orchestrator/OrchestratorComponent.java?rev=1820175&r1=1820174&r2=1820175&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orchestrator/OrchestratorComponent.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orchestrator/OrchestratorComponent.java Thu Jan 4 18:32:54 2018
@@ -150,7 +150,20 @@ implements Orchestrator {
}
public void onDuccAdminKillEvent(DuccAdminEvent event) throws Exception {
+ String location = "onDuccAdminKillEvent";
OrchestratorCheckpoint.getInstance().saveState();
+ /*
+ * OR sleeps a short while to allow other daemons to report
+ * their shutdowns for recording into the system events log.
+ */
+ try {
+ long delay = 10*1000; // 10 seconds
+ logger.info(location, jobid, "delay:"+delay);
+ Thread.sleep(delay);
+ }
+ catch(InterruptedException e) {
+ logger.error(location, jobid, e);
+ }
SystemEventsLogger.warn(IDuccLoggerComponents.abbrv_orchestrator, EventType.SHUTDOWN.name(), "");
super.onDuccAdminKillEvent(event);
}
Modified: uima/uima-ducc/trunk/uima-ducc-pm/src/main/java/org/apache/uima/ducc/pm/ProcessManagerComponent.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-pm/src/main/java/org/apache/uima/ducc/pm/ProcessManagerComponent.java?rev=1820175&r1=1820174&r2=1820175&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-pm/src/main/java/org/apache/uima/ducc/pm/ProcessManagerComponent.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-pm/src/main/java/org/apache/uima/ducc/pm/ProcessManagerComponent.java Thu Jan 4 18:32:54 2018
@@ -74,7 +74,7 @@ implements ProcessManager {
private int shareQuantum;
private int fudgeFactor = 5; // default 5%
- String stateChangeEndpoint;
+ private String stateChangeEndpoint;
public ProcessManagerComponent(CamelContext context, DuccEventDispatcher eventDispatcher) {
super("ProcessManager",context);
@@ -122,7 +122,7 @@ implements ProcessManager {
super.stop();
}
- public void setstateChangeEndpoint(String stateChangeEndpoint) {
+ public void setStateChangeEndpoint(String stateChangeEndpoint) {
this.stateChangeEndpoint = stateChangeEndpoint;
}
Modified: uima/uima-ducc/trunk/uima-ducc-pm/src/main/java/org/apache/uima/ducc/pm/config/ProcessManagerConfiguration.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-pm/src/main/java/org/apache/uima/ducc/pm/config/ProcessManagerConfiguration.java?rev=1820175&r1=1820174&r2=1820175&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-pm/src/main/java/org/apache/uima/ducc/pm/config/ProcessManagerConfiguration.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-pm/src/main/java/org/apache/uima/ducc/pm/config/ProcessManagerConfiguration.java Thu Jan 4 18:32:54 2018
@@ -207,7 +207,7 @@ public class ProcessManagerConfiguration
DuccEventDispatcher eventDispatcher = processManagerTransport.duccEventDispatcher(common.agentRequestEndpoint, camelContext);
logger.info("processManager()",null, "PM publishes state update to Agents on endpoint:"+common.agentRequestEndpoint);
ProcessManagerComponent pm = new ProcessManagerComponent(camelContext, eventDispatcher);
- pm.setstateChangeEndpoint(common.daemonsStateChangeEndpoint);
+ pm.setStateChangeEndpoint(common.daemonsStateChangeEndpoint);
// Instantiate delegate listener to receive incoming messages.
ProcessManagerEventListener delegateListener = this.processManagerDelegateListener(pm);
// Inject a dispatcher into the listener in case it needs to send
Modified: uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/WebServerComponent.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/WebServerComponent.java?rev=1820175&r1=1820174&r2=1820175&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/WebServerComponent.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/WebServerComponent.java Thu Jan 4 18:32:54 2018
@@ -131,7 +131,7 @@ implements IWebServer {
this.eventDispatcher = eventDispatcher;
}
- public void setstateChangeEndpoint(String stateChangeEndpoint) {
+ public void setStateChangeEndpoint(String stateChangeEndpoint) {
this.stateChangeEndpoint = stateChangeEndpoint;
}
Modified: uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/config/WebServerConfiguration.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/config/WebServerConfiguration.java?rev=1820175&r1=1820174&r2=1820175&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/config/WebServerConfiguration.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/config/WebServerConfiguration.java Thu Jan 4 18:32:54 2018
@@ -153,7 +153,7 @@ public class WebServerConfiguration {
}
}
ws = new WebServerComponent(common.camelContext(), common);
- ws.setstateChangeEndpoint(common.daemonsStateChangeEndpoint);
+ ws.setStateChangeEndpoint(common.daemonsStateChangeEndpoint);
DuccBoot.boot(common);
// Instantiate delegate listener to receive incoming messages.
WebServerEventListener delegateListener = this.webServerDelegateListener(ws);