diff options
| author | Andrew Branson <andrew.branson@cern.ch> | 2013-05-21 13:35:48 +0200 |
|---|---|---|
| committer | Andrew Branson <andrew.branson@cern.ch> | 2013-05-21 13:35:48 +0200 |
| commit | 034cb248097b7db3aa57af3be6f91a984815ad4b (patch) | |
| tree | 89ae7c18ebcc853a0885baa3333e8b66ba73e98c /src/main/java/com/c2kernel/entity/agent | |
| parent | 67c0a6473884c7cde27c64e194a474d124cfd4f3 (diff) | |
Collect stale job IDs when refreshing joblist. Remove them after to
avoid concurrent mod, as we don't want to preload all the values. Fixes
#112
Diffstat (limited to 'src/main/java/com/c2kernel/entity/agent')
| -rw-r--r-- | src/main/java/com/c2kernel/entity/agent/JobList.java | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/src/main/java/com/c2kernel/entity/agent/JobList.java b/src/main/java/com/c2kernel/entity/agent/JobList.java index f8a88ee..3772c22 100644 --- a/src/main/java/com/c2kernel/entity/agent/JobList.java +++ b/src/main/java/com/c2kernel/entity/agent/JobList.java @@ -1,5 +1,6 @@ package com.c2kernel.entity.agent;
+import java.util.ArrayList;
import java.util.Iterator;
import java.util.Vector;
@@ -72,14 +73,21 @@ public class JobList extends RemoteMap<Job> public void removeJobsForStep( int sysKey, String stepPath )
{
- Iterator<Job> currentMembers = values().iterator();
- while( currentMembers.hasNext() )
+ ArrayList<String> staleJobs = new ArrayList<String>();
+ Iterator<String> jobIter = keySet().iterator();
+ while( jobIter.hasNext() )
{
- Job j = currentMembers.next();
+ String jid = jobIter.next();
+ Job j = get(jid);
if( j.getItemSysKey() == sysKey && j.getStepPath().equals(stepPath))
- remove( String.valueOf(j.getID()) );
+ staleJobs.add(jid);
}
+
+ Logger.msg(3, "JobList.removeJobsForStep() - removing "+staleJobs.size());
+ for (String jid : staleJobs) {
+ remove(jid);
+ }
Logger.msg(5, "JobList::removeJobsForStep() - " + sysKey + " DONE." );
}
/**
|
