[ArtifactExporter] Apply limit to invocation

We are seeing more artifact uploaded from some invocation. Some tasks in artifact export queue are stuck.

In https://screenshot.googleplex.com/5LKB89RHpNBpJ9c, I noticed those stuck tasks are from the ChromeOS invocations that uploads hundred thousands to millions of artifact, and the total size exceeding 70GB. Even with the limit introduced in https://chromium-review.googlesource.com/c/infra/luci/luci-go/+/5677626, we still handle more than 38GB of artifact data per invocation. It was too much for a cloud task to handle.

In this CL, I added a limit at invocation level. We will not upload invocations with the total of > 5GB of artifacts. Given that in https://screenshot.googleplex.com/5zmzGEgZG84ERda , we have successfully upload invocations of this size before (without getting stuck), I think our task would be able to handle this size.


Bug:b/351046122
Change-Id: I19ad45a0c9e24c12635f2cc28e6fc4d158c25f69
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/infra/luci/luci-go/+/5679382
Reviewed-by: Matthew Warton <mwarton@google.com>
Auto-Submit: Tuan Nguyen <nqmtuan@google.com>
Reviewed-by: Patrick Meiring <meiring@google.com>
Commit-Queue: Tuan Nguyen <nqmtuan@google.com>
2 files changed
tree: 6239da9b064b0f913999cae6f276283fe78ff16d
  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. teams/
  40. third_party/
  41. tokenserver/
  42. tools/
  43. tree_status/
  44. vpython/
  45. web/
  46. .gitallowed
  47. .gitattributes
  48. .gitignore
  49. .go-lintable
  50. AUTHORS
  51. codereview.settings
  52. CONTRIBUTING.md
  53. CONTRIBUTORS
  54. go.mod
  55. go.sum
  56. LICENSE
  57. OWNERS
  58. PRESUBMIT.py
  59. README.md
  60. tools.go
  61. 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.