Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitaly.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Cai <jcai@gitlab.com>2021-12-14 19:20:39 +0300
committerJohn Cai <jcai@gitlab.com>2021-12-14 19:21:23 +0300
commit96e5c7bc0e2b1d02c931c48f9464d812f74a0b11 (patch)
tree42c7faefc6a293cdfaba5b4ef077f15a27851610 /internal
parent15bd131a5376ad167d63af4243e4663df520d506 (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.go10
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)
}