[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>
1 file changed
tree: a17b0481c0b5479e48b93ffbc801025187eb84f3
  1. analysis/
  2. appengine/
  3. auth/
  4. auth_service/
  5. bisection/
  6. build/
  7. buildbucket/
  8. casviewer/
  9. cipd/
  10. cipkg/
  11. client/
  12. common/
  13. config/
  14. config_service/
  15. cv/
  16. deploy/
  17. examples/
  18. gae/
  19. gce/
  20. grpc/
  21. hardcoded/
  22. led/
  23. logdog/
  24. luci_notify/
  25. lucicfg/
  26. lucictx/
  27. luciexe/
  28. mailer/
  29. milo/
  30. mmutex/
  31. provenance/
  32. resultdb/
  33. scheduler/
  34. scripts/
  35. server/
  36. standalone/
  37. starlark/
  38. swarming/
  39. third_party/
  40. tokenserver/
  41. tools/
  42. tree_status/
  43. vpython/
  44. web/
  45. .gitallowed
  46. .gitattributes
  47. .gitignore
  48. .golangci.yml
  49. AUTHORS
  50. codereview.settings
  51. CONTRIBUTING.md
  52. CONTRIBUTORS
  53. go.mod
  54. go.sum
  55. LICENSE
  56. OWNERS
  57. PRESUBMIT.py
  58. README.md
  59. tools.go
  60. WATCHLISTS
README.md

luci-go: LUCI services and tools in Go

GoReference

Installing

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

Contributing uses the same flow as Chromium contributions.