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 2016/09/15 19:19:55 UTC
svn commit: r1760970 - in /uima/uima-ducc/trunk:
uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orchestrator/
uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/
uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/
uima-ducc-tra...
Author: degenaro
Date: Thu Sep 15 19:19:55 2016
New Revision: 1760970
URL: http://svn.apache.org/viewvc?rev=1760970&view=rev
Log: (empty)
Modified:
uima/uima-ducc/trunk/uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orchestrator/OrchestratorComponent.java
uima/uima-ducc/trunk/uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orchestrator/ProcessAccounting.java
uima/uima-ducc/trunk/uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orchestrator/StateManager.java
uima/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/ServiceSet.java
uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/DuccTransportConfiguration.java
uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/DuccWorkMap.java
uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/IDuccWorkMap.java
uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/IResourceState.java
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/DuccDataHelper.java
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/registry/IServicesRegistry.java
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/registry/ServiceInterpreter.java
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/registry/ServicesHelper.java
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/registry/ServicesRegistry.java
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/registry/sort/ServicesHelper.java
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccAbstractHandler.java
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandler.java
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=1760970&r1=1760969&r2=1760970&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 Sep 15 19:19:55 2016
@@ -994,7 +994,7 @@ implements Orchestrator {
if(reqRole.equals(SpecificationProperties.key_role_administrator)) {
jobCompletionType = JobCompletionType.CanceledByAdministrator;
}
- stateManager.jobTerminate(duccWorkJob, jobCompletionType, rationale, ProcessDeallocationType.JobCanceled);
+ stateManager.jobTerminate(duccWorkJob, jobCompletionType, rationale, ProcessDeallocationType.ServiceStopped);
OrchestratorCheckpoint.getInstance().saveState();
// prepare for reply to canceler
properties.put(JobReplyProperties.key_message, JobReplyProperties.msg_canceled);
Modified: uima/uima-ducc/trunk/uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orchestrator/ProcessAccounting.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orchestrator/ProcessAccounting.java?rev=1760970&r1=1760969&r2=1760970&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orchestrator/ProcessAccounting.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orchestrator/ProcessAccounting.java Thu Sep 15 19:19:55 2016
@@ -272,8 +272,8 @@ public class ProcessAccounting {
logger.trace(methodName, null, messages.fetch("enter"));
process.setCpuTime(inventoryProcess.getCpuTime());
process.setCurrentCPU(inventoryProcess.getCurrentCPU());
- logger.trace(methodName, dw.getDuccId(), process.getDuccId(), "Cpu Time (overall):"+process.getCpuTime());
- logger.trace(methodName, dw.getDuccId(), process.getDuccId(), "Cpu Time (current):"+process.getCurrentCPU());
+ logger.info(methodName, dw.getDuccId(), process.getDuccId(), "Cpu Time (overall):"+process.getCpuTime());
+ logger.info(methodName, dw.getDuccId(), process.getDuccId(), "Cpu Time (current):"+process.getCurrentCPU());
logger.trace(methodName, null, messages.fetch("exit"));
return;
}
@@ -328,6 +328,10 @@ public class ProcessAccounting {
logger.trace(methodName, jobId, processId, messages.fetchLabel("run end")+ts);
}
}
+ ITimeWindow tw = process.getTimeWindowRun();
+ if(tw != null) {
+ logger.info(methodName, jobId, processId, "start:"+tw.getStart()+" "+"end:"+tw.getEnd());
+ }
}
logger.trace(methodName, null, messages.fetch("exit"));
return;
@@ -550,20 +554,24 @@ public class ProcessAccounting {
}
}
adjustWindows(job, process);
- adjustRunTime(process);
+ adjustRunTime(job, process);
}
// <uima-3351>
- private void adjustRunTime(IDuccProcess process) {
- if(!process.isAssignedWork()) {
- ITimeWindow twr = process.getTimeWindowRun();
- if(twr == null) {
- twr = new TimeWindow();
- process.setTimeWindowRun(twr);
- }
- long time = 0;
- twr.setStartLong(time);
- twr.setEndLong(time);
+ private void adjustRunTime(IDuccWorkJob job, IDuccProcess process) {
+ switch(job.getDuccType()) {
+ case Job:
+ if(!process.isAssignedWork()) {
+ ITimeWindow twr = process.getTimeWindowRun();
+ if(twr == null) {
+ twr = new TimeWindow();
+ process.setTimeWindowRun(twr);
+ }
+ long time = 0;
+ twr.setStartLong(time);
+ twr.setEndLong(time);
+ }
+ break;
}
}
// </uima-3351>
Modified: uima/uima-ducc/trunk/uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orchestrator/StateManager.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orchestrator/StateManager.java?rev=1760970&r1=1760969&r2=1760970&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orchestrator/StateManager.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orchestrator/StateManager.java Thu Sep 15 19:19:55 2016
@@ -1461,6 +1461,130 @@ public class StateManager {
logger.trace(methodName, null, messages.fetch("exit"));
}
+ private void inventoryJob(IDuccWork duccWork, IDuccProcess inventoryProcess) {
+ String methodName = "inventoryJob";
+ DuccWorkJob job = (DuccWorkJob) duccWork;
+ DuccId jobId = job.getDuccId();
+ DuccId processId = inventoryProcess.getDuccId();
+ ProcessType processType = inventoryProcess.getProcessType();
+ switch(processType) {
+ case Pop:
+ OrchestratorCommonArea.getInstance().getProcessAccounting().setStatus(inventoryProcess);
+ switch(inventoryProcess.getProcessState()) {
+ case LaunchFailed:
+ case Failed:
+ if(inventoryProcess.getDuccId().getFriendly() == 0) {
+ jobTerminate(job, JobCompletionType.DriverProcessFailed, new Rationale(inventoryProcess.getReasonForStoppingProcess()), inventoryProcess.getProcessDeallocationType());
+ }
+ else {
+ jobTerminate(job, JobCompletionType.ProcessFailure, new Rationale(inventoryProcess.getReasonForStoppingProcess()), inventoryProcess.getProcessDeallocationType());
+ }
+ break;
+ default:
+ if(inventoryProcess.isComplete()) {
+ OrchestratorCommonArea.getInstance().getProcessAccounting().deallocate(job,ProcessDeallocationType.Stopped);
+ IRationale rationale = new Rationale("state manager reported as normal completion");
+ int errors = job.getSchedulingInfo().getIntWorkItemsError();
+ int done = job.getSchedulingInfo().getIntWorkItemsCompleted();
+ if(errors > 0) {
+ setCompletionIfNotAlreadySet(job, JobCompletionType.Error, new Rationale("state manager detected error work items="+errors));
+ }
+ else if(done == 0) {
+ setCompletionIfNotAlreadySet(job, JobCompletionType.EndOfJob, new Rationale("state manager detected no work items processed"));
+ }
+ // <UIMA-3337>
+ else {
+ setCompletionIfNotAlreadySet(job, JobCompletionType.EndOfJob, rationale);
+ }
+ // </UIMA-3337>
+ completeJob(job, rationale);
+ }
+ break;
+ }
+ break;
+ case Service:
+ logger.warn(methodName, jobId, processId, "unexpected process type: "+processType);
+ break;
+ case Job_Uima_AS_Process:
+ OrchestratorCommonArea.getInstance().getProcessAccounting().setStatus(inventoryProcess);
+ try {
+ if(!job.isInitialized()) {
+ IDuccProcessMap map = job.getProcessMap();
+ for(Entry<DuccId, IDuccProcess> entry : map.entrySet()) {
+ IDuccProcess process = entry.getValue();
+ StringBuffer sb = new StringBuffer();
+ sb.append("pid:"+process.getPID()+" ");
+ sb.append("state:"+process.getProcessState()+" ");
+ sb.append("reason:"+process.getReasonForStoppingProcess()+" ");
+ logger.trace(methodName, job.getDuccId(), sb.toString());
+ }
+ long initFailureCount = job.getProcessInitFailureCount();
+ long startup_initialization_error_limit = DuccPropertiesResolver.get(DuccPropertiesResolver.ducc_jd_startup_initialization_error_limit, 1);
+ if(initFailureCount >= startup_initialization_error_limit) {
+ String reason = "process inititialization failure count["+initFailureCount+"] meets startup initialization error limit["+startup_initialization_error_limit+"]";
+ logger.warn(methodName, job.getDuccId(), reason);
+ JobCompletionType jobCompletionType = JobCompletionType.CanceledBySystem;
+ Rationale rationale = new Rationale(reason);
+ ProcessDeallocationType processDeallocationType = ProcessDeallocationType.JobCanceled;
+ stateManager.jobTerminate(job, jobCompletionType, rationale, processDeallocationType);
+ }
+ else {
+ String reason = "process failure count["+initFailureCount+"] does not exceed startup initialization error limit["+startup_initialization_error_limit+"]";
+ logger.debug(methodName, job.getDuccId(), reason);
+ }
+ }
+ else {
+ logger.trace(methodName, job.getDuccId(), "job is initialized");
+ }
+ }
+ catch(Exception e) {
+ logger.error(methodName, jobId, e);
+ }
+ break;
+ }
+ // <UIMA-3923>
+ advanceToCompleted(job);
+ // </UIMA-3923>
+ }
+
+ private void inventoryService(IDuccWork duccWork, IDuccProcess inventoryProcess) {
+ //String methodName = "inventoryService";
+ DuccWorkJob service = (DuccWorkJob) duccWork;
+ ProcessType processType = inventoryProcess.getProcessType();
+ switch(processType) {
+ case Pop:
+ OrchestratorCommonArea.getInstance().getProcessAccounting().setStatus(inventoryProcess);
+ if(inventoryProcess.isComplete()) {
+ OrchestratorCommonArea.getInstance().getProcessAccounting().deallocate(service,ProcessDeallocationType.Stopped);
+ }
+ if(!service.hasAliveProcess()) {
+ completeManagedReservation(service, new Rationale("state manager reported no viable service process exists, type="+processType));
+ }
+ break;
+ case Service:
+ OrchestratorCommonArea.getInstance().getProcessAccounting().setStatus(inventoryProcess);
+ if(inventoryProcess.isComplete()) {
+ OrchestratorCommonArea.getInstance().getProcessAccounting().deallocate(service,ProcessDeallocationType.Stopped);
+ }
+ if(!service.hasAliveProcess()) {
+ completeService(service, new Rationale("state manager reported no viable service process exists, type="+processType));
+ }
+ break;
+ case Job_Uima_AS_Process:
+ OrchestratorCommonArea.getInstance().getProcessAccounting().setStatus(inventoryProcess);
+ if(inventoryProcess.isComplete()) {
+ OrchestratorCommonArea.getInstance().getProcessAccounting().deallocate(service,ProcessDeallocationType.Stopped);
+ }
+ if(!service.hasAliveProcess()) {
+ completeService(service, new Rationale("state manager reported no viable service process exists, type="+processType));
+ }
+ break;
+ }
+ // <UIMA-3923>
+ advanceToCompleted(service);
+ // </UIMA-3923>
+ }
+
/**
* Node Inventory reconciliation
*/
@@ -1491,120 +1615,10 @@ public class StateManager {
DuccType jobType = duccWork.getDuccType();
switch(jobType) {
case Job:
- DuccWorkJob job = (DuccWorkJob) duccWork;
- switch(processType) {
- case Pop:
- OrchestratorCommonArea.getInstance().getProcessAccounting().setStatus(inventoryProcess);
- switch(inventoryProcess.getProcessState()) {
- case LaunchFailed:
- case Failed:
- if(inventoryProcess.getDuccId().getFriendly() == 0) {
- jobTerminate(job, JobCompletionType.DriverProcessFailed, new Rationale(inventoryProcess.getReasonForStoppingProcess()), inventoryProcess.getProcessDeallocationType());
- }
- else {
- jobTerminate(job, JobCompletionType.ProcessFailure, new Rationale(inventoryProcess.getReasonForStoppingProcess()), inventoryProcess.getProcessDeallocationType());
- }
- break;
- default:
- if(inventoryProcess.isComplete()) {
- OrchestratorCommonArea.getInstance().getProcessAccounting().deallocate(job,ProcessDeallocationType.Stopped);
- IRationale rationale = new Rationale("state manager reported as normal completion");
- int errors = job.getSchedulingInfo().getIntWorkItemsError();
- int done = job.getSchedulingInfo().getIntWorkItemsCompleted();
- if(errors > 0) {
- setCompletionIfNotAlreadySet(job, JobCompletionType.Error, new Rationale("state manager detected error work items="+errors));
- }
- else if(done == 0) {
- setCompletionIfNotAlreadySet(job, JobCompletionType.EndOfJob, new Rationale("state manager detected no work items processed"));
- }
- // <UIMA-3337>
- else {
- setCompletionIfNotAlreadySet(job, JobCompletionType.EndOfJob, rationale);
- }
- // </UIMA-3337>
- completeJob(job, rationale);
- }
- break;
- }
- break;
- case Service:
- logger.warn(methodName, jobId, processId, "unexpected process type: "+processType);
- break;
- case Job_Uima_AS_Process:
- OrchestratorCommonArea.getInstance().getProcessAccounting().setStatus(inventoryProcess);
- try {
- if(!job.isInitialized()) {
- IDuccProcessMap map = job.getProcessMap();
- for(Entry<DuccId, IDuccProcess> entry : map.entrySet()) {
- IDuccProcess process = entry.getValue();
- StringBuffer sb = new StringBuffer();
- sb.append("pid:"+process.getPID()+" ");
- sb.append("state:"+process.getProcessState()+" ");
- sb.append("reason:"+process.getReasonForStoppingProcess()+" ");
- logger.trace(methodName, job.getDuccId(), sb.toString());
- }
- long initFailureCount = job.getProcessInitFailureCount();
- long startup_initialization_error_limit = DuccPropertiesResolver.get(DuccPropertiesResolver.ducc_jd_startup_initialization_error_limit, 1);
- if(initFailureCount >= startup_initialization_error_limit) {
- String reason = "process inititialization failure count["+initFailureCount+"] meets startup initialization error limit["+startup_initialization_error_limit+"]";
- logger.warn(methodName, job.getDuccId(), reason);
- JobCompletionType jobCompletionType = JobCompletionType.CanceledBySystem;
- Rationale rationale = new Rationale(reason);
- ProcessDeallocationType processDeallocationType = ProcessDeallocationType.JobCanceled;
- stateManager.jobTerminate(job, jobCompletionType, rationale, processDeallocationType);
- }
- else {
- String reason = "process failure count["+initFailureCount+"] does not exceed startup initialization error limit["+startup_initialization_error_limit+"]";
- logger.debug(methodName, job.getDuccId(), reason);
- }
- }
- else {
- logger.trace(methodName, job.getDuccId(), "job is initialized");
- }
- }
- catch(Exception e) {
- logger.error(methodName, jobId, e);
- }
- break;
- }
- // <UIMA-3923>
- advanceToCompleted(job);
- // </UIMA-3923>
+ inventoryJob(duccWork, inventoryProcess);
break;
case Service:
- DuccWorkJob service = (DuccWorkJob) duccWork;
- switch(processType) {
- case Pop:
- OrchestratorCommonArea.getInstance().getProcessAccounting().setStatus(inventoryProcess);
- if(inventoryProcess.isComplete()) {
- OrchestratorCommonArea.getInstance().getProcessAccounting().deallocate(service,ProcessDeallocationType.Stopped);
- }
- if(!service.hasAliveProcess()) {
- completeManagedReservation(service, new Rationale("state manager reported no viable service process exists, type="+processType));
- }
- break;
- case Service:
- OrchestratorCommonArea.getInstance().getProcessAccounting().setStatus(inventoryProcess);
- if(inventoryProcess.isComplete()) {
- OrchestratorCommonArea.getInstance().getProcessAccounting().deallocate(service,ProcessDeallocationType.Stopped);
- }
- if(!service.hasAliveProcess()) {
- completeService(service, new Rationale("state manager reported no viable service process exists, type="+processType));
- }
- break;
- case Job_Uima_AS_Process:
- OrchestratorCommonArea.getInstance().getProcessAccounting().setStatus(inventoryProcess);
- if(inventoryProcess.isComplete()) {
- OrchestratorCommonArea.getInstance().getProcessAccounting().deallocate(service,ProcessDeallocationType.Stopped);
- }
- if(!service.hasAliveProcess()) {
- completeService(service, new Rationale("state manager reported no viable service process exists, type="+processType));
- }
- break;
- }
- // <UIMA-3923>
- advanceToCompleted(service);
- // </UIMA-3923>
+ inventoryService(duccWork, inventoryProcess);
break;
default:
break;
Modified: uima/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/ServiceSet.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/ServiceSet.java?rev=1760970&r1=1760969&r2=1760970&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/ServiceSet.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/ServiceSet.java Thu Sep 15 19:19:55 2016
@@ -72,7 +72,7 @@ public class ServiceSet
private ServiceHandler handler;
private IStateServices stateHandler;
- // key is unique id of descriptor. The descriptor inherites key from a Job's DuccId, or from
+ // key is unique id of descriptor. The descriptor inherits key from a Job's DuccId, or from
// a unique-to SM key for implicit references.
Map<Long, ServiceInstance> implementors = new HashMap<Long, ServiceInstance>();
@@ -126,7 +126,7 @@ public class ServiceSet
// Date of last known use of the service. 0 means "I don't know"
long last_use = 0;
- // Date of last known succesful ping of the service. 0 means never. UIMA-4309
+ // Date of last known successful ping of the service. 0 means never. UIMA-4309
long last_ping = 0;
boolean notPinging = false;
@@ -165,7 +165,7 @@ public class ServiceSet
// need to govern it
int run_failures = 0;
- boolean excessiveRunFailures = false; // signalled by monitor / pinger if we have too many
+ boolean excessiveRunFailures = false; // signaled by monitor / pinger if we have too many
boolean inShutdown = false;
@@ -830,7 +830,7 @@ public class ServiceSet
if ( isDeregistered() ) return;
//Long strid = id.getFriendly();
- prepareMetaProperties(); // these always need houssecleaning before storing or syncing
+ prepareMetaProperties(); // these always need house cleaning before storing or syncing
if ( ! isRecovered ) { // if not recovery, no need to mess with the record
stateHandler.storeProperties(id, job_props, meta_props);
@@ -1263,7 +1263,7 @@ public class ServiceSet
* @param deletions These are the specific instances to stop.
* @param ndeleteions This is the number of instances to stop. This may well be smaller than
* the size of the 'deletions' array because PingDriver caps deletions to
- * prevent over-agressive or buggy monitors from killing a service.
+ * prevent over-aggressive or buggy monitors from killing a service.
* @param isExcessiveFailuress This is set to 'true' if the ping/monitor decides there have been
* too many instance failures and SM should stop trying to restart them.
*/
@@ -1530,7 +1530,7 @@ public class ServiceSet
}
// If there is a pinger, and it isn't pinging, we must not advance beyond the pinger's state.
- // If there is no pinger, we may never advance beyong Waiting
+ // If there is no pinger, we may never advance beyond Waiting
if ( serviceMeta == null ) {
response = (response.ordinality() < ServiceState.Waiting.ordinality()) ? response : ServiceState.Waiting;
} else if ( serviceMeta != null ) {
Modified: uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/DuccTransportConfiguration.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/DuccTransportConfiguration.java?rev=1760970&r1=1760969&r2=1760970&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/DuccTransportConfiguration.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/DuccTransportConfiguration.java Thu Sep 15 19:19:55 2016
@@ -53,7 +53,8 @@ public class DuccTransportConfiguration
}
brokerUrl = brokerUrl.substring(0, pos);
- String connectURL = "failover:(" + brokerUrl + ")" + decoration;
+ String backupURLs = ",tcp://bluej324:61617";
+ String connectURL = "failover:(" + brokerUrl + backupURLs + ")" + decoration;
duccAMQComponent.setBrokerURL(connectURL);
logger.info("configureJMSTransport", null, "Broker URL: "+connectURL);
Modified: uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/DuccWorkMap.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/DuccWorkMap.java?rev=1760970&r1=1760969&r2=1760970&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/DuccWorkMap.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/DuccWorkMap.java Thu Sep 15 19:19:55 2016
@@ -24,6 +24,7 @@ import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.TreeMap;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicInteger;
@@ -119,7 +120,7 @@ public class DuccWorkMap implements IDuc
return retVal;
}
- public List<DuccWorkJob> getServices(List<String> implementors) {
+ public List<DuccWorkJob> getServicesList(List<String> implementors) {
ArrayList<DuccWorkJob> servicesList = new ArrayList<DuccWorkJob>();
if(implementors != null) {
if(getServiceKeySet().size()> 0) {
@@ -138,6 +139,27 @@ public class DuccWorkMap implements IDuc
return servicesList;
}
+
+ public Map<Long,DuccWorkJob> getServicesMap(List<String> implementors) {
+ TreeMap<Long,DuccWorkJob> servicesMap = new TreeMap<Long,DuccWorkJob>();
+ if(implementors != null) {
+ if(getServiceKeySet().size()> 0) {
+ Iterator<DuccId> iterator = null;
+ iterator = getServiceKeySet().iterator();
+ while(iterator.hasNext()) {
+ DuccId serviceId = iterator.next();
+ Long lid = serviceId.getFriendly();
+ String fid = ""+lid;
+ if(implementors.contains(fid)) {
+ DuccWorkJob service = (DuccWorkJob) findDuccWork(serviceId);
+ servicesMap.put(lid,service);
+ }
+ }
+ }
+ }
+ return servicesMap;
+ }
+
public Set<DuccId> getManagedReservationKeySet() {
Set<DuccId> retVal = new HashSet<DuccId>();
Iterator<DuccId> iterator = keySet().iterator();
Modified: uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/IDuccWorkMap.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/IDuccWorkMap.java?rev=1760970&r1=1760969&r2=1760970&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/IDuccWorkMap.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/IDuccWorkMap.java Thu Sep 15 19:19:55 2016
@@ -44,7 +44,8 @@ public interface IDuccWorkMap extends Se
public IDuccWork findDuccWork(String duccId);
public IDuccWork findDuccWork(DuccType duccType, String id);
- public List<DuccWorkJob> getServices(List<String> implementors);
+ public List<DuccWorkJob> getServicesList(List<String> implementors);
+ public Map<Long,DuccWorkJob> getServicesMap(List<String> implementors);
public boolean isJobDriverNodeAssigned();
public Map<DuccId,IDuccWork> getMap();
Modified: uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/IResourceState.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/IResourceState.java?rev=1760970&r1=1760969&r2=1760970&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/IResourceState.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/IResourceState.java Thu Sep 15 19:19:55 2016
@@ -36,6 +36,7 @@ public interface IResourceState extends
JobCanceled, // Job canceled by user (cancel command)
JobFailure, // Job canceled by JD
JobCompleted, // Process active prior to DUCC restart
+ ServiceStopped, // Service stopped by user (stop command)
Exception, // Process killed by JD exception handler
Timeout, // Process killed by JD timeout handler
AutonomousStop, // Process unexpectedly vanished (not terminated by Agent)
Modified: uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/DuccDataHelper.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/DuccDataHelper.java?rev=1760970&r1=1760969&r2=1760970&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/DuccDataHelper.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/DuccDataHelper.java Thu Sep 15 19:19:55 2016
@@ -19,7 +19,9 @@
package org.apache.uima.ducc.ws;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.Iterator;
+import java.util.Map;
import java.util.Properties;
import java.util.TreeMap;
import java.util.concurrent.ConcurrentSkipListMap;
@@ -65,15 +67,26 @@ public class DuccDataHelper {
return map;
}
- // UIMA-4258 Common code to parse meta.implementors
- public static String[] parseServiceIds(Properties meta)
+ public static String[] parseWorkInstances(Properties meta)
{
- String implementors = meta.getProperty(IServicesRegistry.implementors);
+ String stringArray = meta.getProperty(IServicesRegistry.work_instances);
+ return parseStringArray(stringArray);
+ }
+
+ public static String[] parseImplementors(Properties meta)
+ {
+ String stringArray = meta.getProperty(IServicesRegistry.implementors);
+ return parseStringArray(stringArray);
+ }
+
+ public static String[] parseStringArray(String stringArray)
+ {
+
String[] ret = new String[0];
- if(implementors != null) {
- implementors = implementors.trim();
- if(implementors.length() > 0) {
- String[] tempArray = implementors.trim().split("\\s+");
+ if(stringArray != null) {
+ stringArray = stringArray.trim();
+ if(stringArray.length() > 0) {
+ String[] tempArray = stringArray.trim().split("\\s+");
ret = new String[tempArray.length];
int i = 0;
for (String s : tempArray) {
@@ -91,10 +104,9 @@ public class DuccDataHelper {
return ret;
}
- // UIMA-4258 return implementors in arraylist instead of strion[]
- public static ArrayList<String> parseServiceIdsAsList(Properties meta)
+ public static ArrayList<String> parseImplementorsAsList(Properties meta)
{
- String[] impls = parseServiceIds(meta);
+ String[] impls = parseImplementors(meta);
ArrayList<String> ret = new ArrayList<String>();
for ( String s : impls ) {
@@ -103,7 +115,17 @@ public class DuccDataHelper {
return ret;
}
-
+ public static ArrayList<String> parseWorkInstancesAsList(Properties meta)
+ {
+ String[] impls = parseWorkInstances(meta);
+
+ ArrayList<String> ret = new ArrayList<String>();
+ for ( String s : impls ) {
+ ret.add(s);
+ }
+ return ret;
+ }
+
public TreeMap<String,ArrayList<DuccId>> getServiceToReservationsUsageMap() {
TreeMap<String,ArrayList<DuccId>> map = new TreeMap<String,ArrayList<DuccId>>();
DuccData duccData = DuccData.getInstance();
Modified: uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/registry/IServicesRegistry.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/registry/IServicesRegistry.java?rev=1760970&r1=1760969&r2=1760970&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/registry/IServicesRegistry.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/registry/IServicesRegistry.java Thu Sep 15 19:19:55 2016
@@ -46,6 +46,7 @@ public class IServicesRegistry {
public static final String service_type = IStateServices.SvcMetaProps.service_type.pname();
public static final String submit_error = IStateServices.SvcMetaProps.submit_error.pname();
public static final String user = IStateServices.SvcMetaProps.user.pname();
+ public static final String work_instances = IStateServices.SvcMetaProps.work_instances.pname();
public static final String service_type_CUSTOM = IStateServices.CUSTOM;
Modified: uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/registry/ServiceInterpreter.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/registry/ServiceInterpreter.java?rev=1760970&r1=1760969&r2=1760970&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/registry/ServiceInterpreter.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/registry/ServiceInterpreter.java Thu Sep 15 19:19:55 2016
@@ -293,7 +293,7 @@ public class ServiceInterpreter {
ArrayList<String> retVal = new ArrayList<String>();
try {
// UIMA-4258, use common implementors parser
- String[] implementors = DuccDataHelper.parseServiceIds(meta);
+ String[] implementors = DuccDataHelper.parseImplementors(meta);
for(String implementor : implementors) {
retVal.add(implementor);
}
Modified: uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/registry/ServicesHelper.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/registry/ServicesHelper.java?rev=1760970&r1=1760969&r2=1760970&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/registry/ServicesHelper.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/registry/ServicesHelper.java Thu Sep 15 19:19:55 2016
@@ -61,7 +61,7 @@ public class ServicesHelper {
if(propertiesMeta != null) {
if(propertiesMeta.containsKey(IServicesRegistry.implementors)) {
// UIMA-4258, use common implementors parser
- String[] implementors = DuccDataHelper.parseServiceIds(propertiesMeta);
+ String[] implementors = DuccDataHelper.parseImplementors(propertiesMeta);
for(String implementor : implementors) {
retVal.add(implementor);
}
@@ -78,7 +78,7 @@ public class ServicesHelper {
List<DuccWorkJob> retVal = new ArrayList<DuccWorkJob>();
List<String> implementors = getImplementors(servicesRegistry, propertiesMeta);
IDuccWorkMap duccWorkMap = DuccData.getInstance().get();
- retVal = duccWorkMap.getServices(implementors);
+ retVal = duccWorkMap.getServicesList(implementors);
return retVal;
}
Modified: uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/registry/ServicesRegistry.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/registry/ServicesRegistry.java?rev=1760970&r1=1760969&r2=1760970&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/registry/ServicesRegistry.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/registry/ServicesRegistry.java Thu Sep 15 19:19:55 2016
@@ -204,7 +204,7 @@ public class ServicesRegistry {
Properties meta = payload.meta;
if(meta != null) {
// UIMA-4258, use common implementors parser
- String[] list = DuccDataHelper.parseServiceIds(meta);
+ String[] list = DuccDataHelper.parseImplementors(meta);
for( String member : list ) {
if(member.equals(id+"")) {
@@ -270,6 +270,37 @@ public class ServicesRegistry {
for(String dependency : dependencies) {
String value = dependency.trim();
if(value.length() > 0) {
+ ServiceName serviceName = new ServiceName(dependency);
+ retVal.add(serviceName.toString());
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ catch(Exception e) {
+ e.printStackTrace();
+ }
+ return retVal;
+ }
+
+ public ArrayList<String> getServiceInstancesHistory(String name) {
+ String location = "getServiceInstancesHistory";
+ ArrayList<String> retVal = new ArrayList<String>();
+ try {
+ if(name != null) {
+ ServicesRegistryMapPayload payload = findService(name);
+ if(payload != null) {
+ Properties properties = payload.svc;
+ if(properties != null) {
+ String work_instances = properties.getProperty(IServicesRegistry.work_instances);
+ logger.debug(location, jobid, "name: "+name+" "+"work_instances: "+work_instances);
+ if(work_instances != null) {
+ String[] dependencies = work_instances.split(" ");
+ for(String dependency : dependencies) {
+ String value = dependency.trim();
+ if(value.length() > 0) {
ServiceName serviceName = new ServiceName(dependency);
retVal.add(serviceName.toString());
}
Modified: uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/registry/sort/ServicesHelper.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/registry/sort/ServicesHelper.java?rev=1760970&r1=1760969&r2=1760970&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/registry/sort/ServicesHelper.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/registry/sort/ServicesHelper.java Thu Sep 15 19:19:55 2016
@@ -86,7 +86,7 @@ public class ServicesHelper {
List<DuccWorkJob> retVal = new ArrayList<DuccWorkJob>();
List<String> implementors = serviceAdapter.getImplementors();
IDuccWorkMap duccWorkMap = DuccData.getInstance().get();
- retVal = duccWorkMap.getServices(implementors);
+ retVal = duccWorkMap.getServicesList(implementors);
return retVal;
}
Modified: uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccAbstractHandler.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccAbstractHandler.java?rev=1760970&r1=1760969&r2=1760970&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccAbstractHandler.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccAbstractHandler.java Thu Sep 15 19:19:55 2016
@@ -604,7 +604,7 @@ public abstract class DuccAbstractHandle
if(propertiesMeta != null) {
if(propertiesMeta.containsKey(IServicesRegistry.implementors)) {
// UIMA-4258, use common implementors parser
- String[] implementors = DuccDataHelper.parseServiceIds(propertiesMeta);
+ String[] implementors = DuccDataHelper.parseImplementors(propertiesMeta);
deployments = ""+implementors.length;
}
}
Modified: uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandler.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandler.java?rev=1760970&r1=1760969&r2=1760970&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandler.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandler.java Thu Sep 15 19:19:55 2016
@@ -2267,7 +2267,7 @@ public class DuccHandler extends DuccAbs
properties = payload.meta;
// UIMA-4258, use common implementors parser
- ArrayList<String> implementors = DuccDataHelper.parseServiceIdsAsList(properties);
+ ArrayList<String> implementors = DuccDataHelper.parseImplementorsAsList(properties);
DuccWorkJob service = null;
IDuccWorkMap duccWorkMap = DuccData.getInstance().get();
@@ -2668,32 +2668,50 @@ public class DuccHandler extends DuccAbs
properties = payload.meta;
// UIMA-4258, use common implementors parser
- ArrayList<String> implementors = DuccDataHelper.parseServiceIdsAsList(properties);
+ List<String> implementors_current = DuccDataHelper.parseImplementorsAsList(properties);
+ List<String> implementors_defunct = DuccDataHelper.parseWorkInstancesAsList(properties);
IDuccWorkMap duccWorkMap = DuccData.getInstance().get();
- List<DuccWorkJob> servicesList = duccWorkMap.getServices(implementors);
- int counter = 0;
- AllocationType type = AllocationType.SPU;
- String service_type = properties.getProperty(IServicesRegistry.service_type);
- if(service_type != null) {
- if(service_type.equalsIgnoreCase(IServicesRegistry.service_type_CUSTOM)) {
- type = AllocationType.SPC;
+ for(int i=0; i<2; i++) {
+ Map<Long,DuccWorkJob> servicesMap = null;
+ switch(i) {
+ case 0:
+ servicesMap = duccWorkMap.getServicesMap(implementors_current);
+ break;
+ case 1:
+ servicesMap = duccWorkMap.getServicesMap(implementors_defunct);
+ break;
}
- }
- EffectiveUser eu = EffectiveUser.create(request);
- for(DuccWorkJob service : servicesList) {
- String directory = service.getLogDirectory()+File.separator+service.getId();
- Map<String, FileInfo> fileInfoMap = getFileInfoMap(eu, directory);
- IDuccProcessMap map = service.getProcessMap();
- if(map.isEmpty()) {
- buildServiceProcessListEntry(eu, sb, service, null, DetailsType.Service, type, ++counter, fileInfoMap);
- }
- else {
- for(DuccId key : map.keySet()) {
- IDuccProcess process = map.get(key);
- buildServiceProcessListEntry(eu, sb, service, process, DetailsType.Service, type, ++counter, fileInfoMap);
+
+ Map<Long, DuccWorkJob> inverseServicesMap = new TreeMap<Long,DuccWorkJob>();
+ for(Entry<Long, DuccWorkJob> entry : servicesMap.entrySet()) {
+ inverseServicesMap.put(0-entry.getKey(), entry.getValue());
+ }
+
+ int counter = 0;
+ AllocationType type = AllocationType.SPU;
+ String service_type = properties.getProperty(IServicesRegistry.service_type);
+ if(service_type != null) {
+ if(service_type.equalsIgnoreCase(IServicesRegistry.service_type_CUSTOM)) {
+ type = AllocationType.SPC;
}
}
+ EffectiveUser eu = EffectiveUser.create(request);
+ for(Entry<Long, DuccWorkJob> entry : inverseServicesMap.entrySet()) {
+ DuccWorkJob service = entry.getValue();
+ String directory = service.getLogDirectory()+File.separator+service.getId();
+ Map<String, FileInfo> fileInfoMap = getFileInfoMap(eu, directory);
+ IDuccProcessMap map = service.getProcessMap();
+ if(map.isEmpty()) {
+ buildServiceProcessListEntry(eu, sb, service, null, DetailsType.Service, type, ++counter, fileInfoMap);
+ }
+ else {
+ for(DuccId key : map.keySet()) {
+ IDuccProcess process = map.get(key);
+ buildServiceProcessListEntry(eu, sb, service, process, DetailsType.Service, type, ++counter, fileInfoMap);
+ }
+ }
+ }
}
}
catch(Throwable t) {