Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(338)

Unified Diff: third_party/buildbot_8_4p1/README.chromium

Issue 13619004: Only calculate slave->build mapping once in json output. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/build
Patch Set: Fix nits. Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/buildbot_8_4p1/README.chromium
diff --git a/third_party/buildbot_8_4p1/README.chromium b/third_party/buildbot_8_4p1/README.chromium
index 6747f5a366d277182c08a5094d2fe4b1c5646201..516c8b3f262dbf6f1288c201ded789aa11b119ce 100644
--- a/third_party/buildbot_8_4p1/README.chromium
+++ b/third_party/buildbot_8_4p1/README.chromium
@@ -2916,3 +2916,65 @@ index df80ca6..5304401 100644
from zope.interface import implements
from twisted.python import log, components
+
+
+Speed up slave JSON construction.
+
+diff --git a/third_party/buildbot_8_4p1/buildbot/status/web/status_json.py b/third_party/buildbot_8_4p1/buildbot/status/web/status_json.py
+index 87a7f2d..09fa54f 100644
+--- a/third_party/buildbot_8_4p1/buildbot/status/web/status_json.py
++++ b/third_party/buildbot_8_4p1/buildbot/status/web/status_json.py
+@@ -623,7 +623,7 @@ class SlaveJsonResource(JsonResource):
+ """
+ pageTitle = 'Slave'
+
+- def __init__(self, status, slave_status, buildcache=None):
++ def __init__(self, status, slave_status, buildcache):
+ JsonResource.__init__(self, status)
+ self.slave_status = slave_status
+ self.name = self.slave_status.getName()
+@@ -631,9 +631,8 @@ class SlaveJsonResource(JsonResource):
+
+ # buildcache is used to cache build information across multiple
+ # invocations of SlaveJsonResource. It should be set to an empty
+- # collections.defaultdict(dict). Without it, each invocation will
+- # do a full build scan.
+- self.buildcache = buildcache or collections.defaultdict(dict)
++ # collections.defaultdict(dict).
++ self.buildcache = buildcache
+
+ def getBuilders(self):
+ if self.builders is None:
+@@ -644,22 +643,19 @@ class SlaveJsonResource(JsonResource):
+ self.builders.append(builderName)
+ return self.builders
+
+- def mapSlavesToBuilds(self):
+- for builderName in self.getBuilders():
+- builder_status = self.status.getBuilder(builderName)
+- for i in range(1, builder_status.buildCacheSize - 1):
+- build_status = builder_status.getBuild(-i)
+- if not build_status or not build_status.isFinished():
+- # If not finished, it will appear in runningBuilds.
+- break
Isaac (away) 2013/04/06 01:35:08 This does not look like the diff from origin.
+- slave = self.buildcache[build_status.getSlavename()]
+- slave.setdefault(builderName, []).append(
+- build_status.getNumber())
+-
+ def getSlaveBuildMap(self):
+ if not self.buildcache:
+- self.mapSlavesToBuilds()
++ for builderName in self.getBuilders():
++ builds = []
++ builder_status = self.status.getBuilder(builderName)
++ for i in range(1, builder_status.buildCacheSize - 1):
++ build_status = builder_status.getBuild(-i)
++ if not build_status or not build_status.isFinished():
++ # If not finished, it will appear in runningBuilds.
++ break
++ slave = self.buildcache[build_status.getSlavename()]
++ slave.setdefault(builderName, []).append(
++ build_status.getNumber())
+ return self.buildcache[self.name]
+
+ def asDict(self, request):

Powered by Google App Engine
This is Rietveld 408576698