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): |