[cv] load exactly `limit` of Runs when querying.

This is important when ACLs and/or other filtering converts
$LIMIT of datastore keys representing Runs to <$LIMIT of actual Runs
to be returned. For practical example, consider ui/recents
which shouldn't show empty list with a page token if the user
has no access to any Runs on the first page.

So, this CL implements continued paging behind the scenes until the
$LIMIT of Runs is reached.

Unfortunately, this isn't perfect: if user can't see *any* Runs,
this will result in a quite expensive and futile search across all of
them, which will likely timeout.

R=robertocn, yiwzhang

Bug: 1264161
Change-Id: I43e0a2c882a51a07eb58510b5e0a22e054a53a20
Reviewed-on: https://chromium-review.googlesource.com/c/infra/luci/luci-go/+/3251574
Commit-Queue: Andrii Shyshkalov <tandrii@google.com>
Reviewed-by: Yiwei Zhang <yiwzhang@google.com>
2 files changed
tree: 1b4656d7d828eec2f8f97eaef626507cbf59f65f
  1. appengine/
  2. auth/
  3. auth_service/
  4. buildbucket/
  5. casviewer/
  6. cipd/
  7. client/
  8. cmdrunner/
  9. common/
  10. config/
  11. cv/
  12. dm/
  13. examples/
  14. gae/
  15. gce/
  16. grpc/
  17. hacks/
  18. hardcoded/
  19. led/
  20. logdog/
  21. luci_notify/
  22. lucicfg/
  23. lucictx/
  24. luciexe/
  25. machine-db/
  26. mailer/
  27. milo/
  28. mmutex/
  29. mp/
  30. resultdb/
  31. scheduler/
  32. scripts/
  33. server/
  34. starlark/
  35. swarming/
  36. tokenserver/
  37. tools/
  38. tumble/
  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

GoDoc

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

Contributing

Contributing uses the same flow as Chromium contributions.