commit | b69f03ff18217c4d00a0ca991b2f1542a81a5fea | [log] [tgz] |
---|---|---|
author | Scott Lee <ddoman@chromium.org> | Fri Nov 17 23:23:52 2023 |
committer | LUCI CQ <infra-scoped@luci-project-accounts.iam.gserviceaccount.com> | Fri Nov 17 23:23:52 2023 |
tree | a17b0481c0b5479e48b93ffbc801025187eb84f3 | |
parent | 33e6f6990fd8797ccaac1fbb8b8407b1bbb9680a [diff] |
[cv] dispatch ParentRunCompleted event immediately Let's say that 1. The child run ended before the parent Run. It will check the parent run status and then sleep until the next event. 2. A minute after the parent Run ended. Currently, NotifyParentRunCompleted() enqueues the ParentRunCompleted event without dispatch. i.e., it doesn't wake up the child Run. As a result, the child Run will continue sleeping until the next Poke(), which is delivered every 5 mins. At the worst case, this adds, to a child CL, 5 mins of submission delay after the parent run finishes. As the stack beomces larger, the delay gets cumulated. - CL2 waited for 5 mins after CL1 submitted. - CL3 waited for 5 mins after CL2 submitted, which itself was also delayed by 5 mins. Hence, CL3's submission was delayed by at most 10 mins, if CL2 was able to be submitted instantly after CL1 submission. - CL4 with another 5 mins (cumulated) If the event is dispatched immediately, RM will wake up the child run immediately. a) if the child run is still running, OnParentRunCompleted() will eat the event w/o taking any action. It's fine. Once the tryjobs of the child run is done, it will check the parent run status at OnSubmissionReady() by itself. b) if the child run ended already, OnParentRunCompleted() will enqueue ReadyForSubmissions() event, and the CL will be submitted. Bug: 1470351 Change-Id: I9cc647a2df6e23e04c5e6a954e939fded416ff1b Reviewed-on: https://chromium-review.googlesource.com/c/infra/luci/luci-go/+/5039442 Auto-Submit: Scott Lee <ddoman@chromium.org> Reviewed-by: Yiwei Zhang <yiwzhang@google.com> Commit-Queue: Yiwei Zhang <yiwzhang@google.com>
LUCI Go code is meant to be worked on from an Chromium infra.git checkout, which enforces packages versions and Go toolchain version. First get fetch via depot_tools.git then run:
fetch infra cd infra/go eval `./env.py` cd src/go.chromium.org/luci
It is now possible to directly install tools with go install:
go install go.chromium.org/luci/auth/client/cmd/...@latest go install go.chromium.org/luci/buildbucket/cmd/...@latest go install go.chromium.org/luci/cipd/client/cmd/...@latest go install go.chromium.org/luci/client/cmd/...@latest go install go.chromium.org/luci/cv/cmd/...@latest go install go.chromium.org/luci/gce/cmd/...@latest go install go.chromium.org/luci/grpc/cmd/...@latest go install go.chromium.org/luci/logdog/client/cmd/...@latest go install go.chromium.org/luci/luci_notify/cmd/...@latest go install go.chromium.org/luci/lucicfg/cmd/...@latest go install go.chromium.org/luci/luciexe/legacy/cmd/...@latest go install go.chromium.org/luci/mailer/cmd/...@latest go install go.chromium.org/luci/mmutex/cmd/...@latest go install go.chromium.org/luci/resultdb/cmd/...@latest go install go.chromium.org/luci/server/cmd/...@latest go install go.chromium.org/luci/swarming/cmd/...@latest go install go.chromium.org/luci/tokenserver/cmd/...@latest go install go.chromium.org/luci/tools/cmd/...@latest
Contributing uses the same flow as Chromium contributions.