Browse Source

celeryd-multi: Fixed 'set changed size during iteration' bug in restart

Ask Solem 14 years ago
parent
commit
00835903e3
1 changed files with 8 additions and 5 deletions
  1. 8 5
      celery/bin/celeryd_multi.py

+ 8 - 5
celery/bin/celeryd_multi.py

@@ -225,11 +225,14 @@ class MultiTool(object):
                 callback(*node)
 
         self.note(self.colored.blue("> Stopping nodes..."))
-        for node in P:
-            nodename, _, pid = node
-            self.note("\t> %s: %s -> %s" % (nodename, SIGMAP[sig][3:], pid))
-            if not self.signal_node(nodename, pid, sig):
-                on_down(node)
+        for node in list(P):
+            if node in P:
+                nodename, _, pid = node
+                self.note("\t> %s: %s -> %s" % (nodename,
+                                                SIGMAP[sig][3:],
+                                                pid))
+                if not self.signal_node(nodename, pid, sig):
+                    on_down(node)
 
         def note_waiting():
             left = len(P)