<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -491,7 +491,7 @@ class Procs:
       queue = kwargs.get('queue')
       if not kwargs.has_key('tag'): kwargs['tag'] = string.join(cmdv)
 
-      if queue and self.queues.get(queue) != None:
+      if queue and self.queues.get(queue):
          # Will process later
          if Verbose &gt; 1: print &gt;&gt;sys.stderr, &quot;Queueing&quot;, cmdv, &quot;to&quot;, queue, len(self.queues[queue])
          self.queues[queue].append(kwargs)
@@ -531,6 +531,17 @@ class Procs:
 
       return r
 
+   def wakeup(self, qname): 
+         #Wake-up anything on this queue
+         if self.queues[qname]:
+            kwargs = self.queues[qname].pop(0)
+            #if not self.queues[qname]: 
+               # If nothing left on queue, remove it so we won't block
+               #print &quot;remove queue&quot;
+               #del self.queues[qname]
+            if Verbose &gt; 1: print &gt;&gt;sys.stderr, &quot;Waking&quot;, kwargs
+            self.PopenNow(**kwargs)
+
    def collect(self, ignoreErrors=False):
       &quot;&quot;&quot;Execute any active or queued processes and return, a boolean success scalar and a list of the processes objects that ran.&quot;&quot;&quot;
 
@@ -539,7 +550,7 @@ class Procs:
       total = 0
       while True:
          p = self.waitpid(True)
-         if not p: break
+         if p == None: break
 
          results.append(p)
          total += 1
@@ -550,16 +561,6 @@ class Procs:
                err = p.stderr.read()
                p.stderr.close()
                if err: print &gt;&gt;sys.stderr, err
- 
-         #Wake-up anything on this queue
-         if self.queues[p.queue]:
-            kwargs = self.queues[p.queue].pop(0)
-            #if not self.queues[p.queue]: 
-               # If nothing left on queue, remove it so we won't block
-               #print &quot;remove queue&quot;
-               #del self.queues[p.queue]
-            #if Verbose: print &gt;&gt;sys.stderr, &quot;Waking&quot;, kwargs
-            self.PopenNow(**kwargs)
 
       for k,v in self.queues.items():
          assert(not v)
@@ -595,6 +596,8 @@ class Procs:
 
       del self.pids[p.pid]
 
+      self.wakeup(p.queue)
+     
       return p
 
 
@@ -795,7 +798,7 @@ class JobScheduler:
             self.finalize(p)
 
    def finalize(self, p):
-      print &gt;&gt;p.syncfile, p.status, p.utime, p.stime
+      print &gt;&gt;p.syncfile, p.status, p.utime, p.stime, p.queue
       p.syncfile = None
 
       f = file(p.outdirname + &quot;/.&quot; + p.outbasename + &quot;/status&quot;, &quot;w&quot;)</diff>
      <filename>fm</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>edb488fe0201c59d6dda9f29f7a6177a83e81386</id>
    </parent>
  </parents>
  <author>
    <name>Michael E. Fisk</name>
    <email>mfisk@lanl.gov</email>
  </author>
  <url>http://github.com/mfisk/filemap/commit/80062468209c4bd104613425a5776ea1cd278066</url>
  <id>80062468209c4bd104613425a5776ea1cd278066</id>
  <committed-date>2009-11-06T05:51:46-08:00</committed-date>
  <authored-date>2009-11-06T05:51:46-08:00</authored-date>
  <message>check for wakeups in more cases and fix bug that caused work to go on empty queues instead of running immediately.</message>
  <tree>2f934b41d24cefa187e3c75e12b4047507379e78</tree>
  <committer>
    <name>Michael E. Fisk</name>
    <email>mfisk@cfl-cs1.lanl.gov</email>
  </committer>
</commit>
