cascade status: avoid negative lag, sort by name
authorMarko Kreen <markokr@gmail.com>
Wed, 23 Feb 2011 11:49:49 +0000 (13:49 +0200)
committerMarko Kreen <markokr@gmail.com>
Wed, 23 Feb 2011 11:49:49 +0000 (13:49 +0200)
negative lag can happen if info fetching takes too long.

python/pgq/cascade/nodeinfo.py

index 96de45510df72380a2176dfe571699644e85a2b5..48dea4b201d34b7f5d5f3086ca59af89e0647ba5 100644 (file)
@@ -5,6 +5,8 @@
 
 __all__ = ['MemberInfo', 'NodeInfo', 'QueueInfo']
 
+import datetime
+
 # node types
 ROOT = 'root'
 BRANCH = 'branch'
@@ -109,7 +111,12 @@ class NodeInfo:
             if cinfo and root.queue_info:
                 tick_time = cinfo['tick_time']
                 root_time = root.queue_info['now']
-                lag = root_time - tick_time
+                if root_time < tick_time:
+                    # ignore negative lag - probably due to info gathering
+                    # taking long time
+                    lag = datetime.timedelta(0)
+                else:
+                    lag = root_time - tick_time
         elif self.queue_info:
             lag = self.queue_info['ticker_lag']
 
@@ -268,5 +275,5 @@ def _setpfx(pfx, sfx):
     return pfx
 
 def _node_key(n):
-    return (n.levels, n.total_childs)
+    return (n.levels, n.total_childs, n.name)