Chromium Code Reviews| 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): |