[milo] migrate UserConfigsStore to MST and add it to root store

Step two towards merging all app/page-level states into a single store.

Notable changes:
1. Add TransientKeySet to manage stale key deletion.
2. Replace UserConfigsStore with MST UserConfig store.
3. Stop providing UserConfigsStore, change all components to access
UserConfig via the root Store.
4. Store a serialize snapshot in the local storage directly.
5. Add mechanism to recover from the v1 config when running for the
first time.

R=mdraz@google.com, nqmtuan@google.com

Bug: 1353864,1334881
Change-Id: I900a80e19a6c433ced3abe004dcb0b8760849fce
Reviewed-on: https://chromium-review.googlesource.com/c/infra/luci/luci-go/+/3852446
Commit-Queue: Weiwei Lin <weiweilin@google.com>
Reviewed-by: Mostafa Draz <mdraz@google.com>
22 files changed
tree: 807311cfbe535528256eb44237335be0f3d0c590
  1. analysis/
  2. appengine/
  3. auth/
  4. auth_service/
  5. build/
  6. buildbucket/
  7. casviewer/
  8. cipd/
  9. client/
  10. cmdrunner/
  11. common/
  12. config/
  13. cv/
  14. deploy/
  15. examples/
  16. gae/
  17. gce/
  18. grpc/
  19. hacks/
  20. hardcoded/
  21. led/
  22. logdog/
  23. luci_notify/
  24. lucicfg/
  25. lucictx/
  26. luciexe/
  27. mailer/
  28. milo/
  29. mmutex/
  30. provenance/
  31. resultdb/
  32. scheduler/
  33. scripts/
  34. server/
  35. starlark/
  36. swarming/
  37. tokenserver/
  38. tools/
  39. vpython/
  40. web/
  41. .gitallowed
  42. .gitattributes
  43. .golangci.yml
  44. AUTHORS
  45. codereview.settings
  46. CONTRIBUTING.md
  47. CONTRIBUTORS
  48. go.mod
  49. go.sum
  50. LICENSE
  51. OWNERS
  52. PRESUBMIT.py
  53. README.md
  54. tools.go
  55. 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.