Title: [194935] trunk/Websites/perf.webkit.org
Revision
194935
Author
[email protected]
Date
2016-01-12 17:05:20 -0800 (Tue, 12 Jan 2016)

Log Message

buildbot syncing scripts sometimes schedule more than one requests per builder
https://bugs.webkit.org/show_bug.cgi?id=153047

Reviewed by Chris Dumez.

The bug was caused by the check for singularity of scheduledRequests being conducted per configuration
instead of per builder. So if there were multiple test configurations (e.g. Speedometer and Octane) that
both used the same builder, then we may end up scheduling both at once.

Fixed the bug by sharing a single set to keep track of the scheduled requests for all configurations per
builder.

* tools/sync-with-buildbot.py:
(load_config): Share a set amongst test configurations for each builder.
(find_request_updates): Instead of creating a new set for each configuration, reuse the existing sets to
share a single set agmonst test configurations for each builder.

Modified Paths

Diff

Modified: trunk/Websites/perf.webkit.org/ChangeLog (194934 => 194935)


--- trunk/Websites/perf.webkit.org/ChangeLog	2016-01-13 00:32:00 UTC (rev 194934)
+++ trunk/Websites/perf.webkit.org/ChangeLog	2016-01-13 01:05:20 UTC (rev 194935)
@@ -1,5 +1,24 @@
 2016-01-12  Ryosuke Niwa  <[email protected]>
 
+        buildbot syncing scripts sometimes schedule more than one requests per builder
+        https://bugs.webkit.org/show_bug.cgi?id=153047
+
+        Reviewed by Chris Dumez.
+
+        The bug was caused by the check for singularity of scheduledRequests being conducted per configuration
+        instead of per builder. So if there were multiple test configurations (e.g. Speedometer and Octane) that
+        both used the same builder, then we may end up scheduling both at once.
+
+        Fixed the bug by sharing a single set to keep track of the scheduled requests for all configurations per
+        builder.
+
+        * tools/sync-with-buildbot.py:
+        (load_config): Share a set amongst test configurations for each builder.
+        (find_request_updates): Instead of creating a new set for each configuration, reuse the existing sets to
+        share a single set agmonst test configurations for each builder.
+
+2016-01-12  Ryosuke Niwa  <[email protected]>
+
         Analysis results viewer sometimes doesn't show the correct relative difference
         https://bugs.webkit.org/show_bug.cgi?id=152930
 

Modified: trunk/Websites/perf.webkit.org/tools/sync-with-buildbot.py (194934 => 194935)


--- trunk/Websites/perf.webkit.org/tools/sync-with-buildbot.py	2016-01-13 00:32:00 UTC (rev 194934)
+++ trunk/Websites/perf.webkit.org/tools/sync-with-buildbot.py	2016-01-13 01:05:20 UTC (rev 194935)
@@ -79,6 +79,8 @@
             else:
                 config[key] = value
 
+    scheduled_requests_by_builder = {}
+
     configurations = options['configurations']
     for config in configurations:
 
@@ -89,8 +91,10 @@
         escaped_builder_name = urllib.quote(config['builder'])
         config['url'] = '%s/builders/%s/' % (buildbot_url, escaped_builder_name)
         config['jsonURL'] = '%s/json/builders/%s/' % (buildbot_url, escaped_builder_name)
-        config['scheduledRequests'] = set()
 
+        scheduled_requests_by_builder.setdefault(config['builder'], set())
+        config['scheduledRequests'] = scheduled_requests_by_builder[config['builder']]
+
     return configurations
 
 
@@ -98,12 +102,15 @@
     request_updates = {}
 
     for config in configurations:
+        config['scheduledRequests'].clear()
+
+    for config in configurations:
         try:
             pending_builds = fetch_json(config['jsonURL'] + 'pendingBuilds')
             scheduled_requests = filter(None, [request_id_from_build(config, build) for build in pending_builds])
             for request_id in scheduled_requests:
                 request_updates[request_id] = {'status': 'scheduled', 'url': config['url']}
-            config['scheduledRequests'] = set(scheduled_requests)
+                config['scheduledRequests'].add(request_id)
         except (IOError, ValueError) as error:
             print >> sys.stderr, "Failed to fetch pending builds for %s: %s" % (config['builder'], str(error))
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to