-
Notifications
You must be signed in to change notification settings - Fork 17.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
x/build: add "slowbots" support #34501
Comments
Related:
|
Related:
|
Also related: |
Heh, @bradfitz used the term “SlowBots” in #29239 (comment) too. |
This would be fantastic for testing changes on the slow and difficult to set up mobile devices. It would have helped avoid the 4 part fix https://go-review.googlesource.com/c/go/+/193847/ |
Maybe we fold this into an umbrella issue for a Commit Queue that would cover a lot of the issues above? |
Let's not. They're different enough and I was actually working on this one last week. |
Change https://golang.org/cl/201204 mentions this issue: |
For slowbots support. Updates golang/go#34501 Change-Id: I6f8a8b187c3ce4531498f106d62e29e1d1f421d8 Reviewed-on: https://go-review.googlesource.com/c/build/+/201204 Reviewed-by: Ian Lance Taylor <[email protected]>
Change https://golang.org/cl/201338 mentions this issue: |
This is really helpful! How do we know what tokens we can list in "TRY"? Is there an "all" alias? |
The details of the TRY= directive syntax is mostly undefined/undesigned at this point, so opinions welcome. I went with some quick implementation for now just so I could implement something. The tokens can currently be any builder name, or a handful of defined terms that map to the best builder for that term. They currently always add to the default trybot step. The CL's dashboard/builders.go defines the well-known aliases at the top, but that's subject to change. I'm somewhat reluctant to add "all", as that's pretty large and overkill, but maybe. I'd at least want to add some "mostly-all" or "each" (one of each GOOS GOARCH) too, which would be different in that "all" would include really everything, like, linux-386-387 and linux-386-nocgo and weirdo things, but "each" wouldn't? I'm not sure. |
It would be great to be able to specify GOOSes and GOARCHes and get a reasonable set of builders for those (perhaps all of the "first-class ports" that match). It's generally pretty clear what GOOSes and GOARCHes you touched, and harder to manually map those to a useful set of builders. One problem I've run into is that specifying a broken builder appears to leave to trybots stuck for a really long time. E.g., on CL 201402 I listed netbsd-arm-bsiegert, and now that I look at the dashboard, that builder clearly just isn't up. But the trybot run has been dutifully waiting an hour and twenty minutes at this point to get a spot on that builder, which means I don't get the trybot report back on the CL. I know these are slowbots, but maybe it should give up after, say, an hour? |
This is fantastic ! Yes, a few handful of predefined terms which map to different levels of builder coverage would be very helpful. |
I've been using this a bunch on my non-cooperative preemption changes since they touch a lot of architecture code and it's been incredibly helpful. A few things that have caught me by surprise (these aren't necessarily wrong, but should probably be noted in any documentation):
|
I got sidetracked by other stuff, but I just made a minor update tonight:
|
This parses TRY= comments to opt-in to slower/difference trybots. This needs some docs/UI work yet. Updates golang/go#34501 Change-Id: I13a835520d7ac341bc86139b0a2118235bc83e60 Reviewed-on: https://go-review.googlesource.com/c/build/+/201338 Run-TryBot: Brad Fitzpatrick <[email protected]> TryBot-Result: Gobot Gobot <[email protected]> Reviewed-by: Bryan C. Mills <[email protected]>
I wrote the start of some docs: |
Spit-balling some additional
Thoughts? |
I like the idea of biasing toward fewer builders. (Better than my suggestion to use build constraints, at any rate.) Maybe wildcards consistently instead of
|
@bcmills, that's exactly what I started with but I had some hesitation that it was too cryptic, especially with the one you didn't include:
Unlike But if you're cool with it, I'm fine with it. I'm fine with |
I suspect that So a bit of ugliness there may be a feature. |
@bcmills, oh, the other reservation I had about using the
|
Change https://golang.org/cl/203421 mentions this issue: |
This should fix TestSlowBotAliases on tip. Updates golang/go#24715 Updates golang/go#34501 Change-Id: I80f99a5c24ef0860717605816a753fe6625aff17 Reviewed-on: https://go-review.googlesource.com/c/build/+/203421 Run-TryBot: Tobias Klauser <[email protected]> Reviewed-by: Bryan C. Mills <[email protected]>
For slowbots support. Updates golang/go#34501 Change-Id: I6f8a8b187c3ce4531498f106d62e29e1d1f421d8 Reviewed-on: https://go-review.googlesource.com/c/build/+/201204 Reviewed-by: Ian Lance Taylor <[email protected]>
This parses TRY= comments to opt-in to slower/difference trybots. This needs some docs/UI work yet. Updates golang/go#34501 Change-Id: I13a835520d7ac341bc86139b0a2118235bc83e60 Reviewed-on: https://go-review.googlesource.com/c/build/+/201338 Run-TryBot: Brad Fitzpatrick <[email protected]> TryBot-Result: Gobot Gobot <[email protected]> Reviewed-by: Bryan C. Mills <[email protected]>
This should fix TestSlowBotAliases on tip. Updates golang/go#24715 Updates golang/go#34501 Change-Id: I80f99a5c24ef0860717605816a753fe6625aff17 Reviewed-on: https://go-review.googlesource.com/c/build/+/203421 Run-TryBot: Tobias Klauser <[email protected]> Reviewed-by: Bryan C. Mills <[email protected]>
Talking to myself,
I suppose So Too cryptic?
|
Change https://golang.org/cl/227778 mentions this issue: |
In order to resolve #38279 and make SlowBots more predictable, I am considering changing them slightly so that whenever a builder is explicitly requested via the TRY= syntax, it is always considered a SlowBot. Previously, if a builder was explicitly requested via TRY= but also was a part of the default trybot set for a given CL, then it wasn't considered to be a SlowBot. So it was possible to write I've sent CL 227778 for review that implements this change. Please let me know if there's any feedback. |
Change https://golang.org/cl/227780 mentions this issue: |
Previously, a builder was considered to be "SlowBot" whenever it was requested via the TRY= syntax, and it wasn't already a part of the default set of trybot builders. This change makes it so that a builder is considered a SlowBot if it was explicitly requested via the TRY= syntax, even if it was already going to run anyway. The goal behind this change is to improve the experience of using SlowBots, by making them more useful and predictable. The UI currently reports that "SlowBots are starting ..." whenever there is a non-zero amount of SlowBots. So if a user requested TRY=linux-amd64, they'd likely see "TryBots are starting ...", which can be misunderstood to mean that SlowBots are not working. Additionally, if a user requested three builders via TRY= syntax, but one of them happened to be a part of the default try set, then the message at the end would be "Extra slowbot builds that ran:" including only 2 builders. At that point, it's hard to tell whether they got the TRY= syntax wrong for one of the builders, or if it was omitted because it's always run anyway. A future usability improvement in golang.org/issue/38279 is to make SlowBots not skip any tests that normal trybots may skip for faster results. This change is in preparation for that. For golang/go#38279. For golang/go#34501. Change-Id: Idb7f1bcb1694fe72f85237976995a94f273c7c16 Reviewed-on: https://go-review.googlesource.com/c/build/+/227778 Run-TryBot: Dmitri Shuralyov <[email protected]> TryBot-Result: Gobot Gobot <[email protected]> Reviewed-by: Alexander Rakoczy <[email protected]>
Change https://golang.org/cl/227779 mentions this issue: |
When a user explicitly requests a SlowBot builder via the TRY= syntax, it is a signal that they're willing to wait longer for test results. It's more useful to not skip any tests and give the user confidence that the SlowBot run will catch all issues that would otherwise be caught only by post-submit builders after the CL is submitted. This is done by considering a TryBot that isn't an explicit SlowBot to be a "normal TryBot", and the ShouldRunDistTest policy function is provided a parameter specifying whether it's a normal TryBot (non-SlowBot) run. Tests are only skipped during normal TryBot runs, not SlowBot runs. Fixes golang/go#38279. For golang/go#34501. Change-Id: Ia11fd51c71f9de1089b6b6f4c027014893f224b9 Reviewed-on: https://go-review.googlesource.com/c/build/+/227779 Reviewed-by: Alexander Rakoczy <[email protected]>
Slowbots seem to be stickier than I imagined. See CL 238077. I requested a slowbot early on in development. I'd now like to run the normal trybot set, but it seems to still be picking up my original slowbot request, even though that request is now several patch sets in the past. |
@randall77 That is intended behavior, documented at https://golang.org/wiki/SlowBots:
If you already know that and would like to suggest a change, please open a separate issue about it. |
I'm going to close this high level tracking issue as done. By now, SlowBots are widely available and very useful for development purposes. We intend to continue to support them (or an alternative mechanism that provides equivalent functionality) as long as they're deemed useful, and we'll continue to improve them over time together with the rest of the build infrastructure. For all remaining bugs and usability improvements related to SlowBots, please open new issues with "x/build/cmd/coordinator:" prefix and SlowBots in the title. Thank you @bradfitz and everyone else who contributed to making SlowBots a reality! |
We aim to make TryBots be only 5 minutes, but sometimes people want long, deeper tests over all architectures.
We've heard from the compiler/runtime team (@martisch, et al) that a more broad TryBot mode would be useful.
I thought we had a bug for this already but can't find it. (Maybe it was a comment on another bug)
The plan I thought writing about elsewhere was that when clicking "+1 TryBot", you could write some magic syntax in the comment field on Gerrit to specify which extra bots run. Some other tool can help you construct that magic comment & do the Gerrit comment for you, like git-codereview does (when you specify
git-codereview mail -trybot
)The text was updated successfully, but these errors were encountered: