Hello Blink Developers,I'm working on the commit queue (CQ) and would like to hear your feedback about some possible changes to the Blink CQ intended to improve it.1. Would it be fine to move presubmit check from a dedicated blink_presubmit bot to {linux,win,mac}_blink{,_rel} bots? Note that blink_presubmit bot can stay for possible manually submitted try jobs - it'd be just CQ relying on the *_blink* bots to run it instead of having logic to handle the presubmit bot and only then launch other jobs.
2. Should mac_layout and win_layout bots stay on the CQ? Looks like they are intended to be compile-only, but the other *_blink* bots already provide compile coverage, and they do run webkit_lint.
3. What do you think about switching Blink CQ to a simpler commit queue verifier (that's an implementation detail)? It's like 1500 lines of code vs. 150, and it's much easier to reason about and debug in case of problems. A possible drawback is that it relies on the recipe to handle test retries (all Blink trybots except the _layout bots - see #2 above - are on recipes), and so it doesn't do retries itself (which also helps keep things simple and seems to work well in practice for Chromium CQ).
Comments are welcome - note that if any of these changes goes really bad, it'll be easy to revert it and quickly restart CQ. This is an operation that can be done within minutes.
The changes I'm recommending here would really help the health of the CQ. If possible, please bear with me while I'm working on this.
Hello Blink Developers,I'm working on the commit queue (CQ) and would like to hear your feedback about some possible changes to the Blink CQ intended to improve it.1. Would it be fine to move presubmit check from a dedicated blink_presubmit bot to {linux,win,mac}_blink{,_rel} bots? Note that blink_presubmit bot can stay for possible manually submitted try jobs - it'd be just CQ relying on the *_blink* bots to run it instead of having logic to handle the presubmit bot and only then launch other jobs.
2. Should mac_layout and win_layout bots stay on the CQ? Looks like they are intended to be compile-only, but the other *_blink* bots already provide compile coverage, and they do run webkit_lint.
3. What do you think about switching Blink CQ to a simpler commit queue verifier (that's an implementation detail)? It's like 1500 lines of code vs. 150, and it's much easier to reason about and debug in case of problems. A possible drawback is that it relies on the recipe to handle test retries (all Blink trybots except the _layout bots - see #2 above - are on recipes), and so it doesn't do retries itself (which also helps keep things simple and seems to work well in practice for Chromium CQ).
2. Should mac_layout and win_layout bots stay on the CQ? Looks like they are intended to be compile-only, but the other *_blink* bots already provide compile coverage, and they do run webkit_lint.We should probably keep them. They make sure we don't break the debug compile on Mac and Win. For example, if a Windows specific file contains an ASSERT, win_layout is the only bot that will check that the code inside the ASSERT actually builds.
On Tue, Feb 18, 2014 at 4:55 PM, Adam Barth <aba...@chromium.org> wrote:2. Should mac_layout and win_layout bots stay on the CQ? Looks like they are intended to be compile-only, but the other *_blink* bots already provide compile coverage, and they do run webkit_lint.We should probably keep them. They make sure we don't break the debug compile on Mac and Win. For example, if a Windows specific file contains an ASSERT, win_layout is the only bot that will check that the code inside the ASSERT actually builds.I see. Can I just add recipe-based builders that compile in debug mode? There should be no change in behavior observable to you other than different bot name.
** Presubmit ERRORS **
run-bindings-tests (0.22s) failed
Traceback (most recent call last):
File "E:\b\build\slave\win_layout\build\src\third_party\WebKit\Source\bindings\..\..\Tools\Scripts\run-bindings-tests", line 53, in <module>
sys.exit(main(sys.argv))
File "E:\b\build\slave\win_layout\build\src\third_party\WebKit\Source\bindings\..\..\Tools\Scripts\run-bindings-tests", line 49, in main
return BindingsTests(reset_results, test_python, verbose, executive.Executive()).main()
File "E:\b\build\slave\win_layout\build\src\third_party\WebKit\Tools\Scripts\webkitpy\bindings\main.py", line 301, in main
current_scm = detect_scm_system(os.curdir)
File "E:\b\build\slave\win_layout\build\src\third_party\WebKit\Tools\Scripts\webkitpy\common\checkout\scm\detection.py", line 83, in detect_scm_system
return SCMDetector(FileSystem(), Executive()).detect_scm_system(path, patch_directories)
File "E:\b\build\slave\win_layout\build\src\third_party\WebKit\Tools\Scripts\webkitpy\common\checkout\scm\detection.py", line 72, in detect_scm_system
return SVN(cwd=absolute_path, patch_directories=patch_directories, filesystem=self._filesystem, executive=self._executive)
File "E:\b\build\slave\win_layout\build\src\third_party\WebKit\Tools\Scripts\webkitpy\common\checkout\scm\svn.py", line 54, in __init__
SCM.__init__(self, cwd, **kwargs)
File "E:\b\build\slave\win_layout\build\src\third_party\WebKit\Tools\Scripts\webkitpy\common\checkout\scm\scm.py", line 48, in __init__
self.checkout_root = self.find_checkout_root(self.cwd)
File "E:\b\build\slave\win_layout\build\src\third_party\WebKit\Tools\Scripts\webkitpy\common\checkout\scm\svn.py", line 91, in find_checkout_root
uuid = self._find_uuid(path)
File "E:\b\build\slave\win_layout\build\src\third_party\WebKit\Tools\Scripts\webkitpy\common\checkout\scm\svn.py", line 78, in _find_uuid
return self.value_from_svn_info(path, 'Repository UUID')
File "E:\b\build\slave\win_layout\build\src\third_party\WebKit\Tools\Scripts\webkitpy\common\checkout\scm\svn.py", line 84, in value_from_svn_info
info_output = Executive().run_command(svn_info_args, cwd=path).rstrip()
File "E:\b\build\slave\win_layout\build\src\third_party\WebKit\Tools\Scripts\webkitpy\common\system\executive.py", line 394, in run_command
close_fds=self._should_close_fds())
File "E:\b\build\slave\win_layout\build\src\third_party\WebKit\Tools\Scripts\webkitpy\common\system\executive.py", line 466, in popen
return subprocess.Popen(string_args, **kwargs)
File "E:\b\depot_tools\python276_bin\lib\subprocess.py", line 709, in __init__
errread, errwrite)
File "E:\b\depot_tools\python276_bin\lib\subprocess.py", line 957, in _execute_child
startupinfo)
WindowsError: [Error 2] The system cannot find the file specified
Exception WindowsError: (32, 'The process cannot access the file because it is being used by another process', 'c:\\users\\chrome~2\\appdata\\local\\temp\\tmpvsl5xs') in <bound method ScopedTempFileProvider.__del__ of <webkitpy.bindings.main.ScopedTempFileProvider object at 0x02323510>> ignored
BUILDBOT_BUILDERNAME: win_blink_rel
BUILDBOT_BUILDNUMBER: 28707
BUILDBOT_CLOBBER:
BUILDBOT_GOT_REVISION: None
BUILDBOT_REVISION: HEAD
BUILDBOT_SCHEDULER: try_job_rietveld
BUILDBOT_SLAVENAME: vm524-m4
The failure hasn't generated an email (yet), but if it does I'll reply.Just in case it's not obvious, note that there's 2 separate errors here, the first the [Error 2] is something to do with running that SVN command (looks like just not finding the SVN binary?)
The second (WindowsError 32) and below is likely a bug in https://code.google.com/p/chromium/codesearch#chromium/src/third_party/WebKit/Tools/Scripts/webkitpy/bindings/main.py&l=63 which probably should be using __enter__/__exit__ rather than __del__