svn commit: r259259 - user/nwhitehorn/condorports
Nathan Whitehorn
nwhitehorn at FreeBSD.org
Thu Dec 12 14:22:52 UTC 2013
Author: nwhitehorn
Date: Thu Dec 12 14:22:51 2013
New Revision: 259259
URL: http://svnweb.freebsd.org/changeset/base/259259
Log:
Script to parse DAG output for debugging why ports won't build.
Added:
user/nwhitehorn/condorports/dag_status_summary.py (contents, props changed)
Added: user/nwhitehorn/condorports/dag_status_summary.py
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ user/nwhitehorn/condorports/dag_status_summary.py Thu Dec 12 14:22:51 2013 (r259259)
@@ -0,0 +1,56 @@
+import sys
+
+dag = file(sys.argv[1], 'r')
+rescue_dag = file(sys.argv[2], 'r')
+
+dag = dag.readlines()
+rescue_dag = rescue_dag.readlines()
+
+jobs = {}
+for line in dag:
+ line = line.split(' ')
+ if line[0] == 'JOB':
+ jobs[line[1].strip()] = {'done': False, 'children': 0, 'deps': [], 'failed': False}
+ if line[0] == 'PARENT':
+ deps = []
+ for dep in line[1:]:
+ if dep == 'CHILD':
+ break
+ deps.append(dep)
+ jobs[line[-1].strip()]['deps'] = deps
+
+for line in rescue_dag:
+ line = line.split(' ')
+ if line[0] == 'DONE':
+ jobs[line[1].strip()]['done'] = True
+
+jdone = 0
+jfailed = 0
+for job in jobs.values():
+ if job['done']:
+ jdone += 1
+ continue
+ deps_met = True
+ for dep in job['deps']:
+ dep = jobs[dep]
+ dep['children'] += 1
+ if not dep['done']:
+ deps_met = False
+ if deps_met:
+ job['failed'] = True
+ jfailed += 1
+
+print '%d jobs complete' % jdone
+print '%d jobs failed' % jfailed
+
+blocking = []
+for job in jobs:
+ j = jobs[job]
+ if j['failed']:
+ blocking.append((job, j['children']))
+
+blocking.sort(cmp=lambda a,b: cmp(a[1], b[1]), reverse=True)
+print 'Top ten failed jobs blocking other jobs:'
+for job in blocking[:10]:
+ print '\t%s blocking %d dependent jobs' % (job[0], job[1])
+
More information about the svn-src-user
mailing list