Chromium Code Reviews| Index: third_party/buildbot_8_4p1/buildbot/process/builder.py |
| diff --git a/third_party/buildbot_8_4p1/buildbot/process/builder.py b/third_party/buildbot_8_4p1/buildbot/process/builder.py |
| index e92e2d1a34fa1e47532343f21a4beca500dd0080..50c64108c8e1f770ce51a27ac008d8fa2b0c5aba 100644 |
| --- a/third_party/buildbot_8_4p1/buildbot/process/builder.py |
| +++ b/third_party/buildbot_8_4p1/buildbot/process/builder.py |
| @@ -14,7 +14,7 @@ |
| # Copyright Buildbot Team Members |
| -import random, weakref |
| +import inspect, random, weakref |
| from zope.interface import implements |
| from twisted.python import log, failure |
| from twisted.spread import pb |
| @@ -853,12 +853,26 @@ class Builder(pb.Referenceable, service.MultiService): |
| breq_object = unclaimed_request_objects.pop( |
| unclaimed_requests.index(breq)) |
| + # Make sure the merge-requests function can take the queue length. |
| + mergeRequests_with_length_fn = lambda a, b, _ : mergeRequests_fn(a, b) |
| + try: |
| + if len(inspect.getargspec(mergeRequests_fn).args) > 2: |
| + mergeRequests_with_length_fn = mergeRequests_fn |
| + except Exception: |
| + pass |
| + |
| + # This might not reflect exact number of items that could be merged |
| + # (this depends on the canBeMergedWith algorithm), but it can help |
| + # indicating how loaded this builder is. |
| + queue_length = len(unclaimed_request_objects) |
| + |
| # gather the mergeable requests |
| merged_request_objects = [breq_object] |
| for other_breq_object in unclaimed_request_objects: |
| wfd = defer.waitForDeferred( |
| defer.maybeDeferred(lambda : |
| - mergeRequests_fn(breq_object, other_breq_object))) |
| + mergeRequests_with_length_fn( |
| + breq_object, other_breq_object, queue_length))) |
| yield wfd |
| if wfd.getResult(): |
| merged_request_objects.append(other_breq_object) |
|
Michael Achenbach
2016/10/13 10:36:13
Thinking more: Now that I'm already changing this
|