[infinispan-commits] Infinispan SVN: r964 - trunk/bin.

infinispan-commits at lists.jboss.org infinispan-commits at lists.jboss.org
Fri Oct 16 08:45:05 EDT 2009


Author: manik.surtani at jboss.com
Date: 2009-10-16 08:45:05 -0400 (Fri, 16 Oct 2009)
New Revision: 964

Modified:
   trunk/bin/cleanlogs.py
Log:
Better cleanup script

Modified: trunk/bin/cleanlogs.py
===================================================================
--- trunk/bin/cleanlogs.py	2009-10-16 11:31:38 UTC (rev 963)
+++ trunk/bin/cleanlogs.py	2009-10-16 12:45:05 UTC (rev 964)
@@ -38,7 +38,9 @@
 def usage():
   print '''
     Usage: 
-    $ bin/cleanlogs.py <N> <input_file> <output_file>
+      $ bin/cleanlogs.py <N> <input_file> <output_file>
+    OR:
+      $ bin/cleanlogs.py <input_file> <output_file> to allow the script to guess which view is most appropriate.
 
     N: (number) the JGroups VIEW ID to use as the definite list of caches.  Choose a view which has the most complete cache list.
     input_file: path to log file to transform
@@ -47,17 +49,51 @@
     ** All arguments are mandatory!
   '''
 
+def guess_view(fn):
+  all_views_re = re.compile('.*Received new cluster view.*\|([0-9]+). \[(.*)\].*')
+  views = {}
+  with open(fn) as f:
+    for l in f:
+      m = all_views_re.match(l)
+      if m:
+        view_num = m.group(1)
+        members = m.group(2)
+        views[view_num] = as_list(members)
+  return views
+
+def most_likely_view(views):
+  largest_view = -1
+  lvid = -1
+  for i in views.items():
+    if largest_view < len(i[1]):
+      largest_view = len(i[1])
+      lvid = i[0]
+  return lvid
+
+def as_list(string_members):
+  ml = []
+  for m in string_members.split(","):
+    ml.append(m.strip())
+  return ml
+    
 def main():
   help()
 
   ### Get args
-  if len(sys.argv) != 4:
+  if len(sys.argv) != 4 and len(sys.argv) != 3:
     usage()
     sys.exit(1)
 
-  VIEW_TO_USE = int(sys.argv[1])
-  INPUT_FILE = sys.argv[2]
-  OUTPUT_FILE = sys.argv[3]
+  if len(sys.argv) == 4:
+    VIEW_TO_USE = int(sys.argv[1])
+    INPUT_FILE = sys.argv[2]
+    OUTPUT_FILE = sys.argv[3]
+  else:
+    INPUT_FILE = sys.argv[1]
+    OUTPUT_FILE = sys.argv[2]
+    views = guess_view(INPUT_FILE)
+    VIEW_TO_USE = most_likely_view(views)
+    print "Guessing you want view id %s" % VIEW_TO_USE
 
   expr = re.compile('.*Received new cluster view.*\|%s. \[(.*)\].*' % VIEW_TO_USE)
   find(INPUT_FILE, expr)



More information about the infinispan-commits mailing list