Iterator<DuccId> iterator;
ArrayList<DuccId> gone = new ArrayList<DuccId>();
iterator = mMap.keySet().iterator();
while( iterator.hasNext() ) {
DuccId duccId = iterator.next();
gone.add(duccId);
}
long expiryMillis = System.currentTimeMillis()+timeoutMillis+1;
iterator = dwm.getManagedReservationKeySet().iterator();
while( iterator.hasNext() ) {
DuccId duccId = iterator.next();
IDuccWork dw = (IDuccWork)dwm.findDuccWork(duccId);
gone.remove(duccId);
if(!mMap.containsKey(duccId)) {
MonitorInfo monitorInfo = new MonitorInfo();
mMap.put(duccId, monitorInfo);
duccLogger.info(location, duccId, "monitor start");
if(!tMap.containsKey(duccId)) {
if(dw.isCancelOnInterrupt()) {
TrackingInfo ti = new TrackingInfo();
ti.time = expiryMillis;
ti.user = dw.getStandardInfo().getUser();
tMap.put(duccId,ti);
duccLogger.info(location, duccId, "auto-cancel on");
}
else {
duccLogger.info(location, duccId, "auto-cancel off");
}
}
}
DuccWorkJob dwr = (DuccWorkJob) dw;
MonitorInfo monitorInfo = mMap.get(duccId);
//IDuccSchedulingInfo si = dwr.getSchedulingInfo();
//monitorInfo.total = si.getWorkItemsTotal(); // ignore for MR, default to 0
//monitorInfo.done = si.getWorkItemsCompleted(); // ignore for MR, default to 0
//monitorInfo.error = si.getWorkItemsError(); // ignore for MR, default to 0
//monitorInfo.retry = si.getWorkItemsRetry(); // ignore for MR, default to 0
monitorInfo.procs = ""+dwr.getProcessMap().getAliveProcessCount();
Map<DuccId, IDuccProcess> map = dwr.getProcessMap().getMap();
monitorInfo.code = getCode(map);
ArrayList<String> stateSequence = monitorInfo.stateSequence;
String state = dwr.getJobState().toString();
if(!stateSequence.contains(state)) {
duccLogger.info(location, duccId, "state: "+state);
stateSequence.add(state);
}
}
iterator = gone.iterator();
while( iterator.hasNext() ) {
DuccId duccId = iterator.next();
mMap.remove(duccId);
tMap.remove(duccId);
duccLogger.info(location, duccId, "monitor stop");
}