Put Geo node statuses in the database
Description
For Geo we need the status of the different nodes in several places. So instead of fetching the status every time, have a worker to fetch it regularly and store it in the database. Other code can then get it from the database instead of fetching it themselves.
Proposal
-
Add worker that fetches Geo node statuses on a regular basis (e.g. every minute) -
Remove all other uses of Geo::NodeStatusService
, but get the node statuses from the database -
Make /admin/geo_nodes
properly work with the mechanism
Links / references
Follow-up to a discussion started by @nick.thomas (and also this one):
I don't like that we're going to have multiple unrelated jobs polling this endpoint for subsets of the data (this MR, https://gitlab.com/gitlab-org/gitlab-ee/merge_requests/3172/diffs#7d8625b2d782cbaf784b00c0f7fe9bb8ddfdb968_0_12 from @to1ne, the existing status page, and then there's the API endpoint to consider as well).
WDYT to - probably in a follow-up MR - adding a
geo_node_statuses
table that the primary updates by cronjob every minute? All uses ofGeoNodeStatus
would use the database rather than HTTP calls.