diff options
author | John Cai <jcai@gitlab.com> | 2021-12-14 19:20:39 +0300 |
---|---|---|
committer | John Cai <jcai@gitlab.com> | 2021-12-14 19:21:23 +0300 |
commit | 96e5c7bc0e2b1d02c931c48f9464d812f74a0b11 (patch) | |
tree | 42c7faefc6a293cdfaba5b4ef077f15a27851610 /internal | |
parent | 15bd131a5376ad167d63af4243e4663df520d506 (diff) |
datastore: Export query that counts unavailable repos
Export the function that queries for unavailable repositories in
preparation for a praefect startup check to utilizie it.
Diffstat (limited to 'internal')
-rw-r--r-- | internal/praefect/datastore/collector.go | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/internal/praefect/datastore/collector.go b/internal/praefect/datastore/collector.go index a99f6514d..54e090087 100644 --- a/internal/praefect/datastore/collector.go +++ b/internal/praefect/datastore/collector.go @@ -62,7 +62,7 @@ func (c *RepositoryStoreCollector) Collect(ch chan<- prometheus.Metric) { ctx, cancel := context.WithTimeout(context.TODO(), c.timeout) defer cancel() - unavailableCounts, err := c.queryMetrics(ctx) + unavailableCounts, err := CountUnavailableRepositories(ctx, c.db, c.virtualStorages) if err != nil { c.log.WithError(err).Error("failed collecting read-only repository count metric") return @@ -75,11 +75,11 @@ func (c *RepositoryStoreCollector) Collect(ch chan<- prometheus.Metric) { } } -// queryMetrics queries the number of unavailable repositories from the database. +// CountUnavailableRepositories queries the number of unavailable repositories from the database. // A repository is unavailable when it has no replicas that can act as a primary, indicating // they are either unhealthy or out of date. -func (c *RepositoryStoreCollector) queryMetrics(ctx context.Context) (map[string]int, error) { - rows, err := c.db.QueryContext(ctx, ` +func CountUnavailableRepositories(ctx context.Context, db glsql.Querier, virtualStorages []string) (map[string]int, error) { + rows, err := db.QueryContext(ctx, ` SELECT virtual_storage, COUNT(*) FROM repositories WHERE NOT EXISTS ( @@ -87,7 +87,7 @@ WHERE NOT EXISTS ( WHERE valid_primaries.repository_id = repositories.repository_id ) AND repositories.virtual_storage = ANY($1) GROUP BY virtual_storage - `, pq.StringArray(c.virtualStorages)) + `, pq.StringArray(virtualStorages)) if err != nil { return nil, fmt.Errorf("query: %w", err) } |