vps sometimes prints ERR instead of a context ID if it
authorMark Huang <mlhuang@cs.princeton.edu>
Tue, 9 May 2006 03:23:57 +0000 (03:23 +0000)
committerMark Huang <mlhuang@cs.princeton.edu>
Tue, 9 May 2006 03:23:57 +0000 (03:23 +0000)
cannot identify the context of an orphaned (usually dying)
process. Skip these processes.

swapmon.py

index 655ff47..3f6304e 100755 (executable)
@@ -9,7 +9,7 @@
 # Andy Bavier <acb@cs.princeton.edu>
 # Copyright (C) 2004-2006 The Trustees of Princeton University
 #
-# $Id: swapmon.py,v 1.3 2006/05/01 18:28:01 mlhuang Exp $
+# $Id: swapmon.py,v 1.4 2006/05/02 17:23:14 mlhuang Exp $
 #
 
 import syslog
@@ -180,6 +180,12 @@ def slicestat(names = None):
                 except ValueError:
                     pass
 
+        # vps sometimes prints ERR instead of a context ID if it
+        # cannot identify the context of an orphaned (usually dying)
+        # process. Skip these processes.
+        if type(proc['xid']) != int:
+            continue
+
         # Assign (pl_)sshd processes to slice instead of root
         m = re.search(r"sshd: ([a-zA-Z_]+)", proc['cmd'])
         if m is not None:
@@ -187,14 +193,10 @@ def slicestat(names = None):
             if xid is not None:
                 proc['xid'] = xid
 
-        try:
-            name = bwlimit.get_slice(proc['xid'])
-            if name is None:
-                # Orphaned (not associated with a slice) class
-                name = "%d?" % proc['xid']
-        except Exception, err:
-            print "Warning: Exception received while parsing vps output", err
-            print proc
+        name = bwlimit.get_slice(proc['xid'])
+        if name is None:
+            # Orphaned (not associated with a slice) class
+            name = "%d?" % proc['xid']
 
         # Monitor only the specified slices
         if names and name not in names:
@@ -347,7 +349,7 @@ def main():
         (version, slices) = pickle.load(f)
         f.close()
         # Check version of data file
-        if version != "$Id: swapmon.py,v 1.3 2006/05/01 18:28:01 mlhuang Exp $":
+        if version != "$Id: swapmon.py,v 1.4 2006/05/02 17:23:14 mlhuang Exp $":
             print "Not using old version '%s' data file %s" % (version, datafile)
             raise Exception
 
@@ -364,7 +366,7 @@ def main():
         # Delete data file
         os.unlink(datafile)
     except Exception:
-        version = "$Id: swapmon.py,v 1.3 2006/05/01 18:28:01 mlhuang Exp $"
+        version = "$Id: swapmon.py,v 1.4 2006/05/02 17:23:14 mlhuang Exp $"
         slices = {}
 
     # Query process table every 30 seconds, or when a large change in