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:
authorSami Hiltunen <shiltunen@gitlab.com>2022-04-01 16:45:07 +0300
committerSami Hiltunen <shiltunen@gitlab.com>2022-04-13 10:51:51 +0300
commit465af6714c19c7a7d0b38fd02b626b08d1b6f343 (patch)
treeaf2781f1ee8bd847a0c0b9b95d59871bbf68867a
parent23efb30243f15dd8c29e222ba0552a21af9b1cbe (diff)
Add migrations for background verification schema
This commit adds the necessary schema changes for the metadata background verification. Each replica receives two new columns: 1. 'verified_at' which contains the timestamp of the last successful verification of the replica. This effectively allows for identifying replicas that are in need of reverification. 2. 'verification_leased_until' which contains a timestamp until which a worker has acquired a lease to reverify the repository. This prevents multiple workers from picking the same repository for reverification at the same time. 'verification_queue' index is added to index replicas which have not been acquired by any worker. This allows for efficientl querying replicas that are in need of reverification later. Changelog: other
-rw-r--r--_support/praefect-schema.sql11
-rw-r--r--internal/praefect/datastore/migrations/20220303105110_background_verification_columns.go23
2 files changed, 33 insertions, 1 deletions
diff --git a/_support/praefect-schema.sql b/_support/praefect-schema.sql
index b69a2f0c6..78316e80c 100644
--- a/_support/praefect-schema.sql
+++ b/_support/praefect-schema.sql
@@ -266,7 +266,9 @@ CREATE TABLE public.storage_repositories (
relative_path text NOT NULL,
storage text NOT NULL,
generation bigint NOT NULL,
- repository_id bigint NOT NULL
+ repository_id bigint NOT NULL,
+ verified_at timestamp with time zone,
+ verification_leased_until timestamp with time zone
);
@@ -556,6 +558,13 @@ CREATE UNIQUE INDEX storage_repositories_new_pkey ON public.storage_repositories
--
+-- Name: verification_queue; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX verification_queue ON public.storage_repositories USING btree (verified_at NULLS FIRST) WHERE (verification_leased_until IS NULL);
+
+
+--
-- Name: virtual_target_on_replication_queue_idx; Type: INDEX; Schema: public; Owner: -
--
diff --git a/internal/praefect/datastore/migrations/20220303105110_background_verification_columns.go b/internal/praefect/datastore/migrations/20220303105110_background_verification_columns.go
new file mode 100644
index 000000000..578a86948
--- /dev/null
+++ b/internal/praefect/datastore/migrations/20220303105110_background_verification_columns.go
@@ -0,0 +1,23 @@
+package migrations
+
+import migrate "github.com/rubenv/sql-migrate"
+
+func init() {
+ m := &migrate.Migration{
+ Id: "20220303105110_background_verification_columns",
+ Up: []string{
+ "ALTER TABLE storage_repositories ADD COLUMN verified_at TIMESTAMPTZ",
+ "ALTER TABLE storage_repositories ADD COLUMN verification_leased_until TIMESTAMPTZ",
+ `CREATE INDEX verification_queue ON storage_repositories ( verified_at NULLS FIRST )
+ WHERE verification_leased_until IS NULL
+ `,
+ },
+ Down: []string{
+ "DROP INDEX verification_queue",
+ "ALTER TABLE storage_repositories DROP COLUMN verification_leased_until",
+ "ALTER TABLE storage_repositories DROP COLUMN verified_at",
+ },
+ }
+
+ allMigrations = append(allMigrations, m)
+}