drop-node: move find_root before local drop
authorMarko Kreen <markokr@gmail.com>
Thu, 5 Jul 2012 11:09:32 +0000 (14:09 +0300)
committerMarko Kreen <markokr@gmail.com>
Thu, 5 Jul 2012 11:09:32 +0000 (14:09 +0300)
also put them into separate try/except blocks.

This should increase success rate, hopefully.

Suggested-By: Eero Oja
python/pgq/cascade/admin.py

index 20c9e050957b40224bea520a0ce952a501df3cfa..e695ae6cf4449ac5507d5dc95d2d7694ab7b3068 100644 (file)
@@ -497,17 +497,20 @@ class CascadeAdmin(skytools.AdminScript):
             pass
 
         try:
-            # drop node info
-            db = self.get_node_database(node_name)
-            q = "select * from pgq_node.drop_node(%s, %s)"
-            self.exec_cmd(db, q, [self.queue_name, node_name])
-
             # unregister node location from root node (event will be added to queue)
             root_db = self.find_root_db()
             q = "select * from pgq_node.unregister_location(%s, %s)"
             self.exec_cmd(root_db, q, [self.queue_name, node_name])
         except skytools.DBError, d:
-            self.log.warning("Removal failure: %s", str(d))
+            self.log.warning("Unregister from root failed: %s", str(d))
+
+        try:
+            # drop node info
+            db = self.get_node_database(node_name)
+            q = "select * from pgq_node.drop_node(%s, %s)"
+            self.exec_cmd(db, q, [self.queue_name, node_name])
+        except skytools.DBError, d:
+            self.log.warning("Local drop failure: %s", str(d))
 
         # brute force removal
         for n in self.queue_info.member_map.values():