From 64a9cfebb1b098aeea6f0375ad4f5b13305b5074 Mon Sep 17 00:00:00 2001 From: Leonardo da Rosa Date: Thu, 22 Dec 2022 11:32:34 -0300 Subject: [PATCH 01/11] Fix batch background migrations directory structure --- .../TestBackgroundMigration/batch_1/migration-stats.json | 0 .../TestBackgroundMigration/batch_1/migration.log | 0 .../TestBackgroundMigration/batch_1/query-details.json | 0 .../TestBackgroundMigration/batch_1/transaction-duration.json | 0 .../TestBackgroundMigration/batch_2/migration-stats.json | 0 .../TestBackgroundMigration/batch_2/migration.log | 0 .../TestBackgroundMigration/batch_2/query-details.json | 0 .../TestBackgroundMigration/batch_2/transaction-duration.json | 0 .../TestBackgroundMigration/batch_3/migration-stats.json | 0 .../TestBackgroundMigration/batch_3/migration.log | 0 .../TestBackgroundMigration/batch_3/query-details.json | 0 .../TestBackgroundMigration/batch_3/transaction-duration.json | 0 .../TestBackgroundMigration/batch_4/migration-stats.json | 0 .../TestBackgroundMigration/batch_4/migration.log | 0 .../TestBackgroundMigration/batch_4/query-details.json | 0 .../TestBackgroundMigration/batch_4/transaction-duration.json | 0 .../TestBackgroundMigration/batch_5/migration-stats.json | 0 .../TestBackgroundMigration/batch_5/migration.log | 0 .../TestBackgroundMigration/batch_5/query-details.json | 0 .../TestBackgroundMigration/batch_5/transaction-duration.json | 0 20 files changed, 0 insertions(+), 0 deletions(-) rename notifier/spec/fixtures/migration-testing/v4/{ => main}/background_migrations/TestBackgroundMigration/batch_1/migration-stats.json (100%) rename notifier/spec/fixtures/migration-testing/v4/{ => main}/background_migrations/TestBackgroundMigration/batch_1/migration.log (100%) rename notifier/spec/fixtures/migration-testing/v4/{ => main}/background_migrations/TestBackgroundMigration/batch_1/query-details.json (100%) rename notifier/spec/fixtures/migration-testing/v4/{ => main}/background_migrations/TestBackgroundMigration/batch_1/transaction-duration.json (100%) rename notifier/spec/fixtures/migration-testing/v4/{ => main}/background_migrations/TestBackgroundMigration/batch_2/migration-stats.json (100%) rename notifier/spec/fixtures/migration-testing/v4/{ => main}/background_migrations/TestBackgroundMigration/batch_2/migration.log (100%) rename notifier/spec/fixtures/migration-testing/v4/{ => main}/background_migrations/TestBackgroundMigration/batch_2/query-details.json (100%) rename notifier/spec/fixtures/migration-testing/v4/{ => main}/background_migrations/TestBackgroundMigration/batch_2/transaction-duration.json (100%) rename notifier/spec/fixtures/migration-testing/v4/{ => main}/background_migrations/TestBackgroundMigration/batch_3/migration-stats.json (100%) rename notifier/spec/fixtures/migration-testing/v4/{ => main}/background_migrations/TestBackgroundMigration/batch_3/migration.log (100%) rename notifier/spec/fixtures/migration-testing/v4/{ => main}/background_migrations/TestBackgroundMigration/batch_3/query-details.json (100%) rename notifier/spec/fixtures/migration-testing/v4/{ => main}/background_migrations/TestBackgroundMigration/batch_3/transaction-duration.json (100%) rename notifier/spec/fixtures/migration-testing/v4/{ => main}/background_migrations/TestBackgroundMigration/batch_4/migration-stats.json (100%) rename notifier/spec/fixtures/migration-testing/v4/{ => main}/background_migrations/TestBackgroundMigration/batch_4/migration.log (100%) rename notifier/spec/fixtures/migration-testing/v4/{ => main}/background_migrations/TestBackgroundMigration/batch_4/query-details.json (100%) rename notifier/spec/fixtures/migration-testing/v4/{ => main}/background_migrations/TestBackgroundMigration/batch_4/transaction-duration.json (100%) rename notifier/spec/fixtures/migration-testing/v4/{ => main}/background_migrations/TestBackgroundMigration/batch_5/migration-stats.json (100%) rename notifier/spec/fixtures/migration-testing/v4/{ => main}/background_migrations/TestBackgroundMigration/batch_5/migration.log (100%) rename notifier/spec/fixtures/migration-testing/v4/{ => main}/background_migrations/TestBackgroundMigration/batch_5/query-details.json (100%) rename notifier/spec/fixtures/migration-testing/v4/{ => main}/background_migrations/TestBackgroundMigration/batch_5/transaction-duration.json (100%) diff --git a/notifier/spec/fixtures/migration-testing/v4/background_migrations/TestBackgroundMigration/batch_1/migration-stats.json b/notifier/spec/fixtures/migration-testing/v4/main/background_migrations/TestBackgroundMigration/batch_1/migration-stats.json similarity index 100% rename from notifier/spec/fixtures/migration-testing/v4/background_migrations/TestBackgroundMigration/batch_1/migration-stats.json rename to notifier/spec/fixtures/migration-testing/v4/main/background_migrations/TestBackgroundMigration/batch_1/migration-stats.json diff --git a/notifier/spec/fixtures/migration-testing/v4/background_migrations/TestBackgroundMigration/batch_1/migration.log b/notifier/spec/fixtures/migration-testing/v4/main/background_migrations/TestBackgroundMigration/batch_1/migration.log similarity index 100% rename from notifier/spec/fixtures/migration-testing/v4/background_migrations/TestBackgroundMigration/batch_1/migration.log rename to notifier/spec/fixtures/migration-testing/v4/main/background_migrations/TestBackgroundMigration/batch_1/migration.log diff --git a/notifier/spec/fixtures/migration-testing/v4/background_migrations/TestBackgroundMigration/batch_1/query-details.json b/notifier/spec/fixtures/migration-testing/v4/main/background_migrations/TestBackgroundMigration/batch_1/query-details.json similarity index 100% rename from notifier/spec/fixtures/migration-testing/v4/background_migrations/TestBackgroundMigration/batch_1/query-details.json rename to notifier/spec/fixtures/migration-testing/v4/main/background_migrations/TestBackgroundMigration/batch_1/query-details.json diff --git a/notifier/spec/fixtures/migration-testing/v4/background_migrations/TestBackgroundMigration/batch_1/transaction-duration.json b/notifier/spec/fixtures/migration-testing/v4/main/background_migrations/TestBackgroundMigration/batch_1/transaction-duration.json similarity index 100% rename from notifier/spec/fixtures/migration-testing/v4/background_migrations/TestBackgroundMigration/batch_1/transaction-duration.json rename to notifier/spec/fixtures/migration-testing/v4/main/background_migrations/TestBackgroundMigration/batch_1/transaction-duration.json diff --git a/notifier/spec/fixtures/migration-testing/v4/background_migrations/TestBackgroundMigration/batch_2/migration-stats.json b/notifier/spec/fixtures/migration-testing/v4/main/background_migrations/TestBackgroundMigration/batch_2/migration-stats.json similarity index 100% rename from notifier/spec/fixtures/migration-testing/v4/background_migrations/TestBackgroundMigration/batch_2/migration-stats.json rename to notifier/spec/fixtures/migration-testing/v4/main/background_migrations/TestBackgroundMigration/batch_2/migration-stats.json diff --git a/notifier/spec/fixtures/migration-testing/v4/background_migrations/TestBackgroundMigration/batch_2/migration.log b/notifier/spec/fixtures/migration-testing/v4/main/background_migrations/TestBackgroundMigration/batch_2/migration.log similarity index 100% rename from notifier/spec/fixtures/migration-testing/v4/background_migrations/TestBackgroundMigration/batch_2/migration.log rename to notifier/spec/fixtures/migration-testing/v4/main/background_migrations/TestBackgroundMigration/batch_2/migration.log diff --git a/notifier/spec/fixtures/migration-testing/v4/background_migrations/TestBackgroundMigration/batch_2/query-details.json b/notifier/spec/fixtures/migration-testing/v4/main/background_migrations/TestBackgroundMigration/batch_2/query-details.json similarity index 100% rename from notifier/spec/fixtures/migration-testing/v4/background_migrations/TestBackgroundMigration/batch_2/query-details.json rename to notifier/spec/fixtures/migration-testing/v4/main/background_migrations/TestBackgroundMigration/batch_2/query-details.json diff --git a/notifier/spec/fixtures/migration-testing/v4/background_migrations/TestBackgroundMigration/batch_2/transaction-duration.json b/notifier/spec/fixtures/migration-testing/v4/main/background_migrations/TestBackgroundMigration/batch_2/transaction-duration.json similarity index 100% rename from notifier/spec/fixtures/migration-testing/v4/background_migrations/TestBackgroundMigration/batch_2/transaction-duration.json rename to notifier/spec/fixtures/migration-testing/v4/main/background_migrations/TestBackgroundMigration/batch_2/transaction-duration.json diff --git a/notifier/spec/fixtures/migration-testing/v4/background_migrations/TestBackgroundMigration/batch_3/migration-stats.json b/notifier/spec/fixtures/migration-testing/v4/main/background_migrations/TestBackgroundMigration/batch_3/migration-stats.json similarity index 100% rename from notifier/spec/fixtures/migration-testing/v4/background_migrations/TestBackgroundMigration/batch_3/migration-stats.json rename to notifier/spec/fixtures/migration-testing/v4/main/background_migrations/TestBackgroundMigration/batch_3/migration-stats.json diff --git a/notifier/spec/fixtures/migration-testing/v4/background_migrations/TestBackgroundMigration/batch_3/migration.log b/notifier/spec/fixtures/migration-testing/v4/main/background_migrations/TestBackgroundMigration/batch_3/migration.log similarity index 100% rename from notifier/spec/fixtures/migration-testing/v4/background_migrations/TestBackgroundMigration/batch_3/migration.log rename to notifier/spec/fixtures/migration-testing/v4/main/background_migrations/TestBackgroundMigration/batch_3/migration.log diff --git a/notifier/spec/fixtures/migration-testing/v4/background_migrations/TestBackgroundMigration/batch_3/query-details.json b/notifier/spec/fixtures/migration-testing/v4/main/background_migrations/TestBackgroundMigration/batch_3/query-details.json similarity index 100% rename from notifier/spec/fixtures/migration-testing/v4/background_migrations/TestBackgroundMigration/batch_3/query-details.json rename to notifier/spec/fixtures/migration-testing/v4/main/background_migrations/TestBackgroundMigration/batch_3/query-details.json diff --git a/notifier/spec/fixtures/migration-testing/v4/background_migrations/TestBackgroundMigration/batch_3/transaction-duration.json b/notifier/spec/fixtures/migration-testing/v4/main/background_migrations/TestBackgroundMigration/batch_3/transaction-duration.json similarity index 100% rename from notifier/spec/fixtures/migration-testing/v4/background_migrations/TestBackgroundMigration/batch_3/transaction-duration.json rename to notifier/spec/fixtures/migration-testing/v4/main/background_migrations/TestBackgroundMigration/batch_3/transaction-duration.json diff --git a/notifier/spec/fixtures/migration-testing/v4/background_migrations/TestBackgroundMigration/batch_4/migration-stats.json b/notifier/spec/fixtures/migration-testing/v4/main/background_migrations/TestBackgroundMigration/batch_4/migration-stats.json similarity index 100% rename from notifier/spec/fixtures/migration-testing/v4/background_migrations/TestBackgroundMigration/batch_4/migration-stats.json rename to notifier/spec/fixtures/migration-testing/v4/main/background_migrations/TestBackgroundMigration/batch_4/migration-stats.json diff --git a/notifier/spec/fixtures/migration-testing/v4/background_migrations/TestBackgroundMigration/batch_4/migration.log b/notifier/spec/fixtures/migration-testing/v4/main/background_migrations/TestBackgroundMigration/batch_4/migration.log similarity index 100% rename from notifier/spec/fixtures/migration-testing/v4/background_migrations/TestBackgroundMigration/batch_4/migration.log rename to notifier/spec/fixtures/migration-testing/v4/main/background_migrations/TestBackgroundMigration/batch_4/migration.log diff --git a/notifier/spec/fixtures/migration-testing/v4/background_migrations/TestBackgroundMigration/batch_4/query-details.json b/notifier/spec/fixtures/migration-testing/v4/main/background_migrations/TestBackgroundMigration/batch_4/query-details.json similarity index 100% rename from notifier/spec/fixtures/migration-testing/v4/background_migrations/TestBackgroundMigration/batch_4/query-details.json rename to notifier/spec/fixtures/migration-testing/v4/main/background_migrations/TestBackgroundMigration/batch_4/query-details.json diff --git a/notifier/spec/fixtures/migration-testing/v4/background_migrations/TestBackgroundMigration/batch_4/transaction-duration.json b/notifier/spec/fixtures/migration-testing/v4/main/background_migrations/TestBackgroundMigration/batch_4/transaction-duration.json similarity index 100% rename from notifier/spec/fixtures/migration-testing/v4/background_migrations/TestBackgroundMigration/batch_4/transaction-duration.json rename to notifier/spec/fixtures/migration-testing/v4/main/background_migrations/TestBackgroundMigration/batch_4/transaction-duration.json diff --git a/notifier/spec/fixtures/migration-testing/v4/background_migrations/TestBackgroundMigration/batch_5/migration-stats.json b/notifier/spec/fixtures/migration-testing/v4/main/background_migrations/TestBackgroundMigration/batch_5/migration-stats.json similarity index 100% rename from notifier/spec/fixtures/migration-testing/v4/background_migrations/TestBackgroundMigration/batch_5/migration-stats.json rename to notifier/spec/fixtures/migration-testing/v4/main/background_migrations/TestBackgroundMigration/batch_5/migration-stats.json diff --git a/notifier/spec/fixtures/migration-testing/v4/background_migrations/TestBackgroundMigration/batch_5/migration.log b/notifier/spec/fixtures/migration-testing/v4/main/background_migrations/TestBackgroundMigration/batch_5/migration.log similarity index 100% rename from notifier/spec/fixtures/migration-testing/v4/background_migrations/TestBackgroundMigration/batch_5/migration.log rename to notifier/spec/fixtures/migration-testing/v4/main/background_migrations/TestBackgroundMigration/batch_5/migration.log diff --git a/notifier/spec/fixtures/migration-testing/v4/background_migrations/TestBackgroundMigration/batch_5/query-details.json b/notifier/spec/fixtures/migration-testing/v4/main/background_migrations/TestBackgroundMigration/batch_5/query-details.json similarity index 100% rename from notifier/spec/fixtures/migration-testing/v4/background_migrations/TestBackgroundMigration/batch_5/query-details.json rename to notifier/spec/fixtures/migration-testing/v4/main/background_migrations/TestBackgroundMigration/batch_5/query-details.json diff --git a/notifier/spec/fixtures/migration-testing/v4/background_migrations/TestBackgroundMigration/batch_5/transaction-duration.json b/notifier/spec/fixtures/migration-testing/v4/main/background_migrations/TestBackgroundMigration/batch_5/transaction-duration.json similarity index 100% rename from notifier/spec/fixtures/migration-testing/v4/background_migrations/TestBackgroundMigration/batch_5/transaction-duration.json rename to notifier/spec/fixtures/migration-testing/v4/main/background_migrations/TestBackgroundMigration/batch_5/transaction-duration.json -- GitLab From 6da836017f64988f49dac006ba204313b8d029a3 Mon Sep 17 00:00:00 2001 From: Leonardo da Rosa Date: Thu, 22 Dec 2022 12:10:21 -0300 Subject: [PATCH 02/11] Add fixes to expected-comment.txt --- .../migration-testing/v4/expected-comment.txt | 62 +++++++++++++++---- 1 file changed, 50 insertions(+), 12 deletions(-) diff --git a/notifier/spec/fixtures/migration-testing/v4/expected-comment.txt b/notifier/spec/fixtures/migration-testing/v4/expected-comment.txt index 96dc740d..06ac9398 100644 --- a/notifier/spec/fixtures/migration-testing/v4/expected-comment.txt +++ b/notifier/spec/fixtures/migration-testing/v4/expected-comment.txt @@ -128,9 +128,9 @@ Migrations included in this change have been executed on gitlab.com data for tes * Duration: 1.2 s * Database size change: +32.00 KiB -| Query | Calls | Total Time | Max Time | Mean Time | Rows | -| ----- | ----- | ---------- | -------- | --------- | ---- | -|
CREATE TABLE "efficiently_ordered_columns_tables" ("line_attr" line, "circle_attr" circle, "uuid_attr" uuid, "point_attr" point, "id" bigserial primary key, "bigserial_attr" bigserial, "bigint_attr" bigint, "float_attr" float, "time_attr" time, "timestamp_attr" timestamp, "date_attr" date, "integer_attr" integer, "oid_attr" oid, "smallint_attr" smallint, "boolean_attr" boolean, "inet_attr" inet, "jsonb_attr" jsonb, "text_attr" text) /*application:test,db_config_name:main,line:/lib/gitlab/database/migration_helpers/v2.rb:46:in `create_table'*/
| 1 | 9.4 ms | 9.4 ms | 9.4 ms | 0 | +| Calls | Total Time | Max Time | Mean Time | Rows | Query | +| ----- | ---------- | -------- | --------- | ---- | ----- | +| 1 | 9.4 ms | 9.4 ms | 9.4 ms | 0 |
CREATE TABLE "efficiently_ordered_columns_tables" ("line_attr" line, "circle_attr" circle, "uuid_attr" uuid, "point_attr" point, "id" bigserial primary key, "bigserial_attr" bigserial, "bigint_attr" bigint, "float_attr" float, "time_attr" time, "timestamp_attr" timestamp, "date_attr" date, "integer_attr" integer, "oid_attr" oid, "smallint_attr" smallint, "boolean_attr" boolean, "inet_attr" inet, "jsonb_attr" jsonb, "text_attr" text) /*application:test,db_config_name:main,line:/lib/gitlab/database/migration_helpers/v2.rb:46:in `create_table'*/
| @@ -155,9 +155,9 @@ Migrations included in this change have been executed on gitlab.com data for tes * Duration: 1.2 s * Database size change: +40.00 KiB -| Query | Calls | Total Time | Max Time | Mean Time | Rows | -| ----- | ----- | ---------- | -------- | --------- | ---- | -|
CREATE TABLE "inefficiently_ordered_columns_tables" ("id" bigserial primary key, "text_attr" text, "boolean_attr" boolean, "smallint_attr" smallint, "integer_attr" integer, "point_attr" point, "circle_attr" circle, "line_attr" line) /*application:test,db_config_name:main,line:/lib/gitlab/database/migration_helpers/v2.rb:46:in `create_table'*/
| 1 | 5.7 ms | 5.7 ms | 5.7 ms | 0 | +| Calls | Total Time | Max Time | Mean Time | Rows | Query | +| ----- | ---------- | -------- | --------- | ---- | ----- | +| 1 | 5.7 ms | 5.7 ms | 5.7 ms | 0 |
CREATE TABLE "inefficiently_ordered_columns_tables" ("id" bigserial primary key, "text_attr" text, "boolean_attr" boolean, "smallint_attr" smallint, "integer_attr" integer, "point_attr" point, "circle_attr" circle, "line_attr" line) /*application:test,db_config_name:main,line:/lib/gitlab/database/migration_helpers/v2.rb:46:in `create_table'*/
| :warning: Column ordering suggestions @@ -234,6 +234,44 @@ Migrations included in this change have been executed on gitlab.com data for tes ### Background migrations +#### Background Migration: TestBackgroundMigration + +Sampled 5 batches + +Time to complete: 0 day(s), 0 hour(s) and 0 minute(s) + +| Calls | Total Time | Max Time | Mean Time | Rows | Query | +| ----- | ---------- | -------- | --------- | ---- | ----- | +| 5 | 15012.1 ms | 5004.0 ms | 3002.4 ms | 5 |
select pg_sleep($1) /*application:test,db_config_name:main,line:/lib/gitlab/background_migration/test_background_migration.rb:5:in `perform'*/
| + +
+Histogram of batch runtimes for TestBackgroundMigration + +| Batch Runtime | Count | +|---------------|-------| +|0 seconds - 10 seconds | 5 | +|10 seconds - 1 minute | 0 | +|1 minute - 2 minutes | 0 | +|2 minutes - 3 minutes | 0 | +|3 minutes - 5 minutes | 0 | +|5 minutes + | 0 | + +
+ +
+Histogram across all sampled batches of TestBackgroundMigration + +| Query Runtime | Count | +|---------------|-------| +|0 seconds - 0.1 seconds | 0 | +|0.1 seconds - 0.5 seconds | 0 | +|0.5 seconds - 1 second | 0 | +|1 second - 2 seconds | 1 | +|2 seconds - 5 seconds | 3 | +|5 seconds + | 1 | + +
+ --- @@ -409,9 +447,9 @@ Migrations included in this change have been executed on gitlab.com data for tes * Duration: 1.2 s * Database size change: +40.00 KiB -| Query | Calls | Total Time | Max Time | Mean Time | Rows | -| ----- | ----- | ---------- | -------- | --------- | ---- | -|
CREATE TABLE "efficiently_ordered_columns_tables" ("line_attr" line, "circle_attr" circle, "uuid_attr" uuid, "point_attr" point, "id" bigserial primary key, "bigserial_attr" bigserial, "bigint_attr" bigint, "float_attr" float, "time_attr" time, "timestamp_attr" timestamp, "date_attr" date, "integer_attr" integer, "oid_attr" oid, "smallint_attr" smallint, "boolean_attr" boolean, "inet_attr" inet, "jsonb_attr" jsonb, "text_attr" text) /*application:test,db_config_name:ci,line:/lib/gitlab/database/migration_helpers/v2.rb:46:in `create_table'*/
| 1 | 12.0 ms | 12.0 ms | 12.0 ms | 0 | +| Calls | Total Time | Max Time | Mean Time | Rows | Query | +| ----- | ---------- | -------- | --------- | ---- | ----- | +| 1 | 12.0 ms | 12.0 ms | 12.0 ms | 0 |
CREATE TABLE "efficiently_ordered_columns_tables" ("line_attr" line, "circle_attr" circle, "uuid_attr" uuid, "point_attr" point, "id" bigserial primary key, "bigserial_attr" bigserial, "bigint_attr" bigint, "float_attr" float, "time_attr" time, "timestamp_attr" timestamp, "date_attr" date, "integer_attr" integer, "oid_attr" oid, "smallint_attr" smallint, "boolean_attr" boolean, "inet_attr" inet, "jsonb_attr" jsonb, "text_attr" text) /*application:test,db_config_name:ci,line:/lib/gitlab/database/migration_helpers/v2.rb:46:in `create_table'*/
| @@ -436,9 +474,9 @@ Migrations included in this change have been executed on gitlab.com data for tes * Duration: 1.2 s * Database size change: +48.00 KiB -| Query | Calls | Total Time | Max Time | Mean Time | Rows | -| ----- | ----- | ---------- | -------- | --------- | ---- | -|
CREATE TABLE "inefficiently_ordered_columns_tables" ("id" bigserial primary key, "text_attr" text, "boolean_attr" boolean, "smallint_attr" smallint, "integer_attr" integer, "point_attr" point, "circle_attr" circle, "line_attr" line) /*application:test,db_config_name:ci,line:/lib/gitlab/database/migration_helpers/v2.rb:46:in `create_table'*/
| 1 | 19.2 ms | 19.2 ms | 19.2 ms | 0 | +| Calls | Total Time | Max Time | Mean Time | Rows | Query | +| ----- | ---------- | -------- | --------- | ---- | ----- | +| 1 | 19.2 ms | 19.2 ms | 19.2 ms | 0 |
CREATE TABLE "inefficiently_ordered_columns_tables" ("id" bigserial primary key, "text_attr" text, "boolean_attr" boolean, "smallint_attr" smallint, "integer_attr" integer, "point_attr" point, "circle_attr" circle, "line_attr" line) /*application:test,db_config_name:ci,line:/lib/gitlab/database/migration_helpers/v2.rb:46:in `create_table'*/
| :warning: Column ordering suggestions -- GitLab From 7ae10b118d0538d1004fb46c047c38422548d841 Mon Sep 17 00:00:00 2001 From: Leonardo da Rosa Date: Thu, 22 Dec 2022 12:18:12 -0300 Subject: [PATCH 03/11] Remove time to complete section from expected-comment.txt --- .../spec/fixtures/migration-testing/v4/expected-comment.txt | 2 -- 1 file changed, 2 deletions(-) diff --git a/notifier/spec/fixtures/migration-testing/v4/expected-comment.txt b/notifier/spec/fixtures/migration-testing/v4/expected-comment.txt index 06ac9398..568efd06 100644 --- a/notifier/spec/fixtures/migration-testing/v4/expected-comment.txt +++ b/notifier/spec/fixtures/migration-testing/v4/expected-comment.txt @@ -238,8 +238,6 @@ Migrations included in this change have been executed on gitlab.com data for tes Sampled 5 batches -Time to complete: 0 day(s), 0 hour(s) and 0 minute(s) - | Calls | Total Time | Max Time | Mean Time | Rows | Query | | ----- | ---------- | -------- | --------- | ---- | ----- | | 5 | 15012.1 ms | 5004.0 ms | 3002.4 ms | 5 |
select pg_sleep($1) /*application:test,db_config_name:main,line:/lib/gitlab/background_migration/test_background_migration.rb:5:in `perform'*/
| -- GitLab From 8dbd04a01d47a8b17723a706ba04c31356193e26 Mon Sep 17 00:00:00 2001 From: Leonardo da Rosa Date: Thu, 22 Dec 2022 15:22:34 -0300 Subject: [PATCH 04/11] Adds time estimations for Batched Background migrations Uses total_tuple_count / max_batch_size * interval to estimate the amount of seconds to complete --- notifier/background_migration.rb | 4 + notifier/json_payload.rb | 4 +- notifier/migration.rb | 9 +- notifier/migration_meta.rb | 30 ++++++ .../migration-testing/v4/expected-comment.txt | 92 ++++++++++--------- notifier/spec/migration_meta_spec.rb | 46 ++++++++++ .../templates/background_migration_detail.erb | 4 + 7 files changed, 142 insertions(+), 47 deletions(-) create mode 100644 notifier/migration_meta.rb create mode 100644 notifier/spec/migration_meta_spec.rb diff --git a/notifier/background_migration.rb b/notifier/background_migration.rb index 4ae89a36..ffcaa568 100644 --- a/notifier/background_migration.rb +++ b/notifier/background_migration.rb @@ -16,6 +16,10 @@ class BackgroundMigration @batches = batches end + def time_to_complete + @time_to_complete ||= batches.first.time_to_complete + end + def queries matching_queries = batches.flat_map(&:queries).group_by(&:query) diff --git a/notifier/json_payload.rb b/notifier/json_payload.rb index 79d294e2..eabd8037 100644 --- a/notifier/json_payload.rb +++ b/notifier/json_payload.rb @@ -3,9 +3,9 @@ require 'json' require "base64" class JsonPayload - VERSION = 2 + VERSION = 2.1 - ATTRIBUTES = %w[version walltime total_database_size_change success].freeze + ATTRIBUTES = %w[version walltime total_database_size_change success meta].freeze def encode(result) data = result.migrations_from_branch.map do |migration| diff --git a/notifier/migration.rb b/notifier/migration.rb index c4510aab..51b29979 100644 --- a/notifier/migration.rb +++ b/notifier/migration.rb @@ -1,5 +1,7 @@ # frozen_string_literal: true +require_relative 'migration_meta' + class Migration REGULAR_MIGRATION_GUIDANCE_SECONDS = 3.minutes.freeze POST_DEPLOY_MIGRATION_GUIDANCE_SECONDS = 10.minutes.freeze @@ -57,7 +59,7 @@ class Migration attr_accessor :version, :name, :statistics, :total_database_size_change, :queries, :type, :walltime, :intro_on_current_branch, :success, - :query_executions + :query_executions, :meta # So that migration durations can be plotted directly in execution histogram charts alias_method :duration, :walltime @@ -183,6 +185,10 @@ class Migration !success? || exceeds_time_guidance? || has_queries_with_warnings? end + def time_to_complete + "%d day(s), %d hour(s) and %d minute(s)" % meta.time_to_complete + end + def init_stats(stats) unless stats @was_run = false @@ -194,6 +200,7 @@ class Migration @walltime = stats['walltime'].seconds @success = stats['success'] @statistics = stats + @meta = MigrationMeta.new(**stats['meta'].to_h.symbolize_keys) init_queries(stats) end diff --git a/notifier/migration_meta.rb b/notifier/migration_meta.rb new file mode 100644 index 00000000..bfbde97f --- /dev/null +++ b/notifier/migration_meta.rb @@ -0,0 +1,30 @@ +# frozen_string_literal: true + +class MigrationMeta + def initialize(total_tuple_count: 0, max_batch_size: 1, interval: 0) + @total_tuple_count = total_tuple_count.to_i + @max_batch_size = max_batch_size.to_i + @interval = interval.to_i + end + + # Estimates the time that migration will take to complete in production. + # + # @example [2, 14, 45] => 2 days, 14 hours and 45 minutes + # + # @return [Array] array containing [days, hours, minutes] + def time_to_complete + minutes, _ = total_time_estimation.divmod(60) + hours, minutes = minutes.divmod(60) + days, hours = hours.divmod(24) + + [days, hours, minutes] + end + + private + + attr_reader :total_tuple_count, :max_batch_size, :interval + + def total_time_estimation + @total_time_estimation ||= total_tuple_count / max_batch_size * interval.seconds + end +end diff --git a/notifier/spec/fixtures/migration-testing/v4/expected-comment.txt b/notifier/spec/fixtures/migration-testing/v4/expected-comment.txt index 568efd06..db875243 100644 --- a/notifier/spec/fixtures/migration-testing/v4/expected-comment.txt +++ b/notifier/spec/fixtures/migration-testing/v4/expected-comment.txt @@ -238,6 +238,10 @@ Migrations included in this change have been executed on gitlab.com data for tes Sampled 5 batches +Estimated Time to complete: 0 day(s), 0 hour(s) and 0 minute(s) + +_Consider changing max_batch_size and interval to improve the estimated time to complete._ + | Calls | Total Time | Max Time | Mean Time | Rows | Query | | ----- | ---------- | -------- | --------- | ---- | ----- | | 5 | 15012.1 ms | 5004.0 ms | 3002.4 ms | 5 |
select pg_sleep($1) /*application:test,db_config_name:main,line:/lib/gitlab/background_migration/test_background_migration.rb:5:in `perform'*/
| @@ -292,28 +296,28 @@ Sampled 5 batches --- Brought to you by [gitlab-org/database-team/gitlab-com-database-testing](https://gitlab.com/gitlab-org/database-team/gitlab-com-database-testing). [Epic](https://gitlab.com/groups/gitlab-org/database-team/-/epics/9) - ### Database migrations (on the ci database) @@ -573,26 +577,26 @@ Migrations included in this change have been executed on gitlab.com data for tes --- Brought to you by [gitlab-org/database-team/gitlab-com-database-testing](https://gitlab.com/gitlab-org/database-team/gitlab-com-database-testing). [Epic](https://gitlab.com/groups/gitlab-org/database-team/-/epics/9) - diff --git a/notifier/spec/migration_meta_spec.rb b/notifier/spec/migration_meta_spec.rb new file mode 100644 index 00000000..6145e34d --- /dev/null +++ b/notifier/spec/migration_meta_spec.rb @@ -0,0 +1,46 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe MigrationMeta do + subject(:meta) { described_class.new(**params) } + + let(:total_tuple_count) { 150_000_000 } + let(:params) { { total_tuple_count: total_tuple_count, max_batch_size: max_batch_size, interval: interval } } + + describe '#time_to_complete' do + let(:max_batch_size) { 1_000 } + let(:interval) { 180 } + + context 'when max_batch_size is set to 35.000 records having 3 minutes interval' do + it 'calculates initial time to 312 days, 12 hours and 0 minutes' do + expect(meta.time_to_complete).to eq([312, 12, 0]) + end + end + + context 'when interval is decreased to 2 minutes' do + let(:interval) { 120 } + + it 'reduces the time to 208 days, 8 hours and 0 minutes' do + expect(meta.time_to_complete).to eq([208, 8, 0]) + end + end + + context 'when max_batch_size is increased to 85.000 records' do + let(:max_batch_size) { 85_000 } + + it 'reduces the time to 3 days, 16 hours and 12 minutes' do + expect(meta.time_to_complete).to eq([3, 16, 12]) + end + end + + context 'when max_batch_size and interval are optimized' do + let(:interval) { 120 } + let(:max_batch_size) { 250_000 } + + it 'reduces the time to 0 days, 20 hours and 0 minutes' do + expect(meta.time_to_complete).to eq([0, 20, 0]) + end + end + end +end diff --git a/notifier/templates/background_migration_detail.erb b/notifier/templates/background_migration_detail.erb index 84748519..4d3be894 100644 --- a/notifier/templates/background_migration_detail.erb +++ b/notifier/templates/background_migration_detail.erb @@ -2,6 +2,10 @@ Sampled <%= background_migration.batches.count %> batches +Estimated Time to complete: <%= background_migration.time_to_complete %> + +_Consider changing max_batch_size and interval to improve the estimated time to complete._ + % if background_migration.queries.any? <%= render_pgss_table(background_migration.queries) %> % end -- GitLab From ef1ff127100ac3ca94db4fd83e612e9df184d9bc Mon Sep 17 00:00:00 2001 From: Leonardo da Rosa Date: Thu, 22 Dec 2022 15:33:52 -0300 Subject: [PATCH 05/11] Add extra specs when there's no args or args are nil --- notifier/migration.rb | 3 ++- notifier/migration_meta.rb | 2 ++ notifier/spec/migration_meta_spec.rb | 18 ++++++++++++++++++ 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/notifier/migration.rb b/notifier/migration.rb index 51b29979..da56ba0b 100644 --- a/notifier/migration.rb +++ b/notifier/migration.rb @@ -186,7 +186,8 @@ class Migration end def time_to_complete - "%d day(s), %d hour(s) and %d minute(s)" % meta.time_to_complete + days, hours, minutes = meta.time_to_complete + "#{days} day(s), #{hours} hour(s) and #{minutes} minute(s)" end def init_stats(stats) diff --git a/notifier/migration_meta.rb b/notifier/migration_meta.rb index bfbde97f..81cc2bb9 100644 --- a/notifier/migration_meta.rb +++ b/notifier/migration_meta.rb @@ -25,6 +25,8 @@ class MigrationMeta attr_reader :total_tuple_count, :max_batch_size, :interval def total_time_estimation + return 0.seconds if max_batch_size.zero? + @total_time_estimation ||= total_tuple_count / max_batch_size * interval.seconds end end diff --git a/notifier/spec/migration_meta_spec.rb b/notifier/spec/migration_meta_spec.rb index 6145e34d..a48d7470 100644 --- a/notifier/spec/migration_meta_spec.rb +++ b/notifier/spec/migration_meta_spec.rb @@ -42,5 +42,23 @@ RSpec.describe MigrationMeta do expect(meta.time_to_complete).to eq([0, 20, 0]) end end + + context 'when initializing with no args' do + let(:params) { {} } + + it 'returns 0 days, 0 hours and 0 minutes' do + expect(meta.time_to_complete).to eq([0, 0, 0]) + end + end + + context 'when initializing with nil args' do + let(:total_tuple_count) { nil } + let(:max_batch_size) { nil } + let(:interval) { nil } + + it 'returns 0 days, 0 hours and 0 minutes' do + expect(meta.time_to_complete).to eq([0, 0, 0]) + end + end end end -- GitLab From 756739509b2924fcfc644c3a0879ed6b7a136cf2 Mon Sep 17 00:00:00 2001 From: Leonardo da Rosa Date: Thu, 22 Dec 2022 15:34:48 -0300 Subject: [PATCH 06/11] Included extra space between variables and function return --- notifier/migration.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/notifier/migration.rb b/notifier/migration.rb index da56ba0b..3c11bff2 100644 --- a/notifier/migration.rb +++ b/notifier/migration.rb @@ -187,6 +187,7 @@ class Migration def time_to_complete days, hours, minutes = meta.time_to_complete + "#{days} day(s), #{hours} hour(s) and #{minutes} minute(s)" end -- GitLab From 0174b48a40043ec2c0979956566eb758c0ee4605 Mon Sep 17 00:00:00 2001 From: Leonardo da Rosa Date: Thu, 5 Jan 2023 14:40:02 -0300 Subject: [PATCH 07/11] Uses create_table instead of create_table_with_constraints Is solves the pipeline error raised during testing --- .../testing/005-New-Table-Migration.patch | 16 ++++++++-------- .../ci/up/CreateTestTable/migration-stats.json | 2 +- .../v4/ci/up/CreateTestTable/migration.log | 8 ++++---- .../v4/ci/up/CreateTestTable/query-details.json | 2 +- .../migration-testing/v4/expected-comment.txt | 12 ++++++------ .../main/up/CreateTestTable/migration-stats.json | 2 +- .../v4/main/up/CreateTestTable/migration.log | 8 ++++---- .../main/up/CreateTestTable/query-details.json | 2 +- 8 files changed, 26 insertions(+), 26 deletions(-) diff --git a/docker/gitlab/patches/testing/005-New-Table-Migration.patch b/docker/gitlab/patches/testing/005-New-Table-Migration.patch index c608f3c8..0e5fa540 100644 --- a/docker/gitlab/patches/testing/005-New-Table-Migration.patch +++ b/docker/gitlab/patches/testing/005-New-Table-Migration.patch @@ -22,7 +22,7 @@ index 00000000000..71d1890dba8 +class CreateTestTable < Gitlab::Database::Migration[2.1] + include Gitlab::Database::MigrationHelpers + def up -+ create_table_with_constraints :test_tables do |t| ++ create_table :test_tables do |t| + t.bigint :stars, default: 0, null: false + t.timestamps + t.text :title @@ -50,9 +50,9 @@ index d8add15b68d..c6524149b4a 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -21720,6 +21720,26 @@ CREATE SEQUENCE timelog_categories_id_seq - + ALTER SEQUENCE timelog_categories_id_seq OWNED BY timelog_categories.id; - + +CREATE TABLE test_tables ( + id bigint NOT NULL, + stars bigint DEFAULT 0 NOT NULL, @@ -77,24 +77,24 @@ index d8add15b68d..c6524149b4a 100644 id integer NOT NULL, time_spent integer NOT NULL, @@ -24052,6 +24072,8 @@ ALTER TABLE ONLY terraform_states ALTER COLUMN id SET DEFAULT nextval('terraform - + ALTER TABLE ONLY timelog_categories ALTER COLUMN id SET DEFAULT nextval('timelog_categories_id_seq'::regclass); - + +ALTER TABLE ONLY test_tables ALTER COLUMN id SET DEFAULT nextval('test_tables_id_seq'::regclass); + ALTER TABLE ONLY timelogs ALTER COLUMN id SET DEFAULT nextval('timelogs_id_seq'::regclass); - + ALTER TABLE ONLY todos ALTER COLUMN id SET DEFAULT nextval('todos_id_seq'::regclass); @@ -26341,6 +26363,9 @@ ALTER TABLE ONLY terraform_states ALTER TABLE ONLY timelog_categories ADD CONSTRAINT timelog_categories_pkey PRIMARY KEY (id); - + +ALTER TABLE ONLY test_tables + ADD CONSTRAINT test_tables_pkey PRIMARY KEY (id); + ALTER TABLE ONLY timelogs ADD CONSTRAINT timelogs_pkey PRIMARY KEY (id); --- +-- 2.31.1 diff --git a/notifier/spec/fixtures/migration-testing/v4/ci/up/CreateTestTable/migration-stats.json b/notifier/spec/fixtures/migration-testing/v4/ci/up/CreateTestTable/migration-stats.json index 20c72adf..861768cb 100644 --- a/notifier/spec/fixtures/migration-testing/v4/ci/up/CreateTestTable/migration-stats.json +++ b/notifier/spec/fixtures/migration-testing/v4/ci/up/CreateTestTable/migration-stats.json @@ -1 +1 @@ -{"version":20210602144718,"name":"CreateTestTable","walltime":1.9109571874141693,"success":true,"total_database_size_change":24576,"query_statistics":[{"query":"select pg_database_size(current_database()) /*application:test,db_config_name:ci,line:/lib/gitlab/database/migrations/observers/total_database_size_change.rb:25:in `get_total_database_size'*/","calls":1,"total_time":150.822085,"max_time":150.822085,"mean_time":150.822085,"rows":1},{"query":"CREATE TABLE \"test_tables\" (\"id\" bigserial primary key, \"stars\" bigint DEFAULT 0 NOT NULL, \"created_at\" timestamp(6) NOT NULL, \"updated_at\" timestamp(6) NOT NULL, \"title\" text, \"notes\" text) /*application:test,db_config_name:ci,line:/lib/gitlab/database/migration_helpers.rb:100:in `block in create_table_with_constraints'*/","calls":1,"total_time":122.94353,"max_time":122.94353,"mean_time":122.94353,"rows":0},{"query":"SELECT \"ar_internal_metadata\".* FROM \"ar_internal_metadata\" WHERE \"ar_internal_metadata\".\"key\" = $1 LIMIT $2 /*application:test,db_config_name:ci,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","calls":1,"total_time":12.461834999999999,"max_time":12.461834999999999,"mean_time":12.461834999999999,"rows":1},{"query":"SELECT a.attname, format_type(a.atttypid, a.atttypmod),\n pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod,\n c.collname, col_description(a.attrelid, a.attnum) AS comment\n FROM pg_attribute a\n LEFT JOIN pg_attrdef d ON a.attrelid = d.adrelid AND a.attnum = d.adnum\n LEFT JOIN pg_type t ON a.atttypid = t.oid\n LEFT JOIN pg_collation c ON a.attcollation = c.oid AND a.attcollation \u003c\u003e t.typcollation\n WHERE a.attrelid = $1::regclass\n AND a.attnum \u003e $2 AND NOT a.attisdropped\n ORDER BY a.attnum","calls":1,"total_time":8.746094,"max_time":8.746094,"mean_time":8.746094,"rows":4},{"query":"ALTER TABLE \"test_tables\"\nADD CONSTRAINT \"check_0770ba173a\" CHECK (char_length(\"title\") \u003c= 128),\nADD CONSTRAINT \"check_9cfc473dbc\" CHECK (char_length(\"notes\") \u003c= 1024)\n /*application:test,db_config_name:ci,line:/lib/gitlab/database/migration_helpers.rb:128:in `block in create_table_with_constraints'*/","calls":1,"total_time":8.345117,"max_time":8.345117,"mean_time":8.345117,"rows":0},{"query":"SELECT c.relname FROM pg_class c LEFT JOIN pg_namespace n ON n.oid = c.relnamespace WHERE n.nspname = ANY (current_schemas($1)) AND c.relkind IN ($2,$3,$4,$5,$6)","calls":1,"total_time":3.913972,"max_time":3.913972,"mean_time":3.913972,"rows":603},{"query":"SELECT \"schema_migrations\".\"version\" FROM \"schema_migrations\" ORDER BY \"schema_migrations\".\"version\" ASC /*application:test,db_config_name:ci,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","calls":1,"total_time":3.0508900000000003,"max_time":3.0508900000000003,"mean_time":3.0508900000000003,"rows":5385},{"query":"INSERT INTO \"schema_migrations\" (\"version\") VALUES ($1) RETURNING \"version\" /*application:test,db_config_name:ci,line:/lib/gitlab/database.rb:332:in `block in transaction'*/","calls":1,"total_time":2.663913,"max_time":2.663913,"mean_time":2.663913,"rows":1},{"query":"select pg_stat_statements_reset() /*application:test,db_config_name:ci,line:/lib/gitlab/database/migrations/observers/query_statistics.rb:16:in `before'*/","calls":1,"total_time":0.247091,"max_time":0.247091,"mean_time":0.247091,"rows":1},{"query":"SELECT c.relname FROM pg_class c LEFT JOIN pg_namespace n ON n.oid = c.relnamespace WHERE n.nspname = ANY (current_schemas($1)) AND c.relname = $2 AND c.relkind IN ($3,$4)","calls":3,"total_time":0.183331,"max_time":0.085203,"mean_time":0.061110333333333336,"rows":3},{"query":"SELECT t.oid, t.typname\nFROM pg_type as t\nWHERE t.typname IN ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10)\n /*application:test,db_config_name:unknown,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","calls":1,"total_time":0.078373,"max_time":0.078373,"mean_time":0.078373,"rows":10},{"query":"UPDATE \"ar_internal_metadata\" SET \"value\" = $1, \"updated_at\" = $2 WHERE \"ar_internal_metadata\".\"key\" = $3 /*application:test,db_config_name:ci,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","calls":1,"total_time":0.076856,"max_time":0.076856,"mean_time":0.076856,"rows":1},{"query":"SET SESSION timezone TO 'UTC' /*application:test,db_config_name:unknown,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","calls":1,"total_time":0.044863,"max_time":0.044863,"mean_time":0.044863,"rows":0},{"query":"SET SESSION statement_timeout TO '120s' /*application:test,db_config_name:unknown,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","calls":1,"total_time":0.038363,"max_time":0.038363,"mean_time":0.038363,"rows":0},{"query":"SET intervalstyle = iso_8601 /*application:test,db_config_name:unknown,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","calls":1,"total_time":0.034559,"max_time":0.034559,"mean_time":0.034559,"rows":0},{"query":"SELECT $1 FROM pg_proc WHERE proname = $2 /*application:test,db_config_name:ci,line:/lib/gitlab/database/schema_helpers.rb:20:in `function_exists?'*/","calls":1,"total_time":0.033893,"max_time":0.033893,"mean_time":0.033893,"rows":1},{"query":"SET standard_conforming_strings = on /*application:test,db_config_name:unknown,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","calls":1,"total_time":0.032853,"max_time":0.032853,"mean_time":0.032853,"rows":0},{"query":"set client_encoding to 'UTF8'","calls":1,"total_time":0.025851,"max_time":0.025851,"mean_time":0.025851,"rows":0},{"query":"set client_encoding to 'unicode'","calls":1,"total_time":0.020529,"max_time":0.020529,"mean_time":0.020529,"rows":0},{"query":"SET LOCAL lock_timeout TO '100ms' /*application:test,db_config_name:ci,line:/lib/gitlab/database/with_lock_retries.rb:172:in `execute'*/","calls":1,"total_time":0.015339,"max_time":0.015339,"mean_time":0.015339,"rows":0},{"query":"SET client_min_messages TO 'warning' /*application:test,db_config_name:unknown,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","calls":1,"total_time":0.013366,"max_time":0.013366,"mean_time":0.013366,"rows":0},{"query":"SELECT pg_try_advisory_lock($1)","calls":1,"total_time":0.013238,"max_time":0.013238,"mean_time":0.013238,"rows":1},{"query":"SELECT pg_advisory_unlock($1)","calls":1,"total_time":0.012585,"max_time":0.012585,"mean_time":0.012585,"rows":1},{"query":"RESET idle_in_transaction_session_timeout","calls":1,"total_time":0.009762,"max_time":0.009762,"mean_time":0.009762,"rows":0},{"query":"SELECT $1::regtype::oid","calls":1,"total_time":0.009282,"max_time":0.009282,"mean_time":0.009282,"rows":1},{"query":"SELECT current_database()","calls":1,"total_time":0.009191000000000001,"max_time":0.009191000000000001,"mean_time":0.009191000000000001,"rows":1},{"query":"SHOW TIME ZONE /*application:test,db_config_name:unknown,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","calls":1,"total_time":0.006331,"max_time":0.006331,"mean_time":0.006331,"rows":0},{"query":"COMMIT /*application:test,db_config_name:ci,line:/lib/gitlab/database.rb:365:in `commit'*/","calls":2,"total_time":0.0043560000000000005,"max_time":0.003024,"mean_time":0.0021780000000000002,"rows":0},{"query":"BEGIN /*application:test,db_config_name:ci,line:/lib/gitlab/database/with_lock_retries.rb:172:in `execute'*/","calls":1,"total_time":0.002924,"max_time":0.002924,"mean_time":0.002924,"rows":0},{"query":"SAVEPOINT active_record_1 /*application:test,db_config_name:ci,line:/lib/gitlab/database/with_lock_retries.rb:172:in `execute'*/","calls":1,"total_time":0.002924,"max_time":0.002924,"mean_time":0.002924,"rows":0},{"query":"RELEASE SAVEPOINT active_record_1 /*application:test,db_config_name:ci,line:/lib/gitlab/database/with_lock_retries.rb:129:in `run_block_with_lock_timeout'*/","calls":1,"total_time":0.002782,"max_time":0.002782,"mean_time":0.002782,"rows":0},{"query":"RESET lock_timeout /*application:test,db_config_name:ci,line:/lib/gitlab/database/with_lock_retries.rb:172:in `execute'*/","calls":1,"total_time":0.002119,"max_time":0.002119,"mean_time":0.002119,"rows":0},{"query":"BEGIN /*application:test,db_config_name:ci,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","calls":1,"total_time":0.001901,"max_time":0.001901,"mean_time":0.001901,"rows":0}]} \ No newline at end of file +{"version":20210602144718,"name":"CreateTestTable","walltime":1.9109571874141693,"success":true,"total_database_size_change":24576,"query_statistics":[{"query":"select pg_database_size(current_database()) /*application:test,db_config_name:ci,line:/lib/gitlab/database/migrations/observers/total_database_size_change.rb:25:in `get_total_database_size'*/","calls":1,"total_time":150.822085,"max_time":150.822085,"mean_time":150.822085,"rows":1},{"query":"CREATE TABLE \"test_tables\" (\"id\" bigserial primary key, \"stars\" bigint DEFAULT 0 NOT NULL, \"created_at\" timestamp(6) NOT NULL, \"updated_at\" timestamp(6) NOT NULL, \"title\" text, \"notes\" text) /*application:test,db_config_name:ci,line:/lib/gitlab/database/migration_helpers.rb:100:in `block in create_table'*/","calls":1,"total_time":122.94353,"max_time":122.94353,"mean_time":122.94353,"rows":0},{"query":"SELECT \"ar_internal_metadata\".* FROM \"ar_internal_metadata\" WHERE \"ar_internal_metadata\".\"key\" = $1 LIMIT $2 /*application:test,db_config_name:ci,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","calls":1,"total_time":12.461834999999999,"max_time":12.461834999999999,"mean_time":12.461834999999999,"rows":1},{"query":"SELECT a.attname, format_type(a.atttypid, a.atttypmod),\n pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod,\n c.collname, col_description(a.attrelid, a.attnum) AS comment\n FROM pg_attribute a\n LEFT JOIN pg_attrdef d ON a.attrelid = d.adrelid AND a.attnum = d.adnum\n LEFT JOIN pg_type t ON a.atttypid = t.oid\n LEFT JOIN pg_collation c ON a.attcollation = c.oid AND a.attcollation \u003c\u003e t.typcollation\n WHERE a.attrelid = $1::regclass\n AND a.attnum \u003e $2 AND NOT a.attisdropped\n ORDER BY a.attnum","calls":1,"total_time":8.746094,"max_time":8.746094,"mean_time":8.746094,"rows":4},{"query":"ALTER TABLE \"test_tables\"\nADD CONSTRAINT \"check_0770ba173a\" CHECK (char_length(\"title\") \u003c= 128),\nADD CONSTRAINT \"check_9cfc473dbc\" CHECK (char_length(\"notes\") \u003c= 1024)\n /*application:test,db_config_name:ci,line:/lib/gitlab/database/migration_helpers.rb:128:in `block in create_table'*/","calls":1,"total_time":8.345117,"max_time":8.345117,"mean_time":8.345117,"rows":0},{"query":"SELECT c.relname FROM pg_class c LEFT JOIN pg_namespace n ON n.oid = c.relnamespace WHERE n.nspname = ANY (current_schemas($1)) AND c.relkind IN ($2,$3,$4,$5,$6)","calls":1,"total_time":3.913972,"max_time":3.913972,"mean_time":3.913972,"rows":603},{"query":"SELECT \"schema_migrations\".\"version\" FROM \"schema_migrations\" ORDER BY \"schema_migrations\".\"version\" ASC /*application:test,db_config_name:ci,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","calls":1,"total_time":3.0508900000000003,"max_time":3.0508900000000003,"mean_time":3.0508900000000003,"rows":5385},{"query":"INSERT INTO \"schema_migrations\" (\"version\") VALUES ($1) RETURNING \"version\" /*application:test,db_config_name:ci,line:/lib/gitlab/database.rb:332:in `block in transaction'*/","calls":1,"total_time":2.663913,"max_time":2.663913,"mean_time":2.663913,"rows":1},{"query":"select pg_stat_statements_reset() /*application:test,db_config_name:ci,line:/lib/gitlab/database/migrations/observers/query_statistics.rb:16:in `before'*/","calls":1,"total_time":0.247091,"max_time":0.247091,"mean_time":0.247091,"rows":1},{"query":"SELECT c.relname FROM pg_class c LEFT JOIN pg_namespace n ON n.oid = c.relnamespace WHERE n.nspname = ANY (current_schemas($1)) AND c.relname = $2 AND c.relkind IN ($3,$4)","calls":3,"total_time":0.183331,"max_time":0.085203,"mean_time":0.061110333333333336,"rows":3},{"query":"SELECT t.oid, t.typname\nFROM pg_type as t\nWHERE t.typname IN ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10)\n /*application:test,db_config_name:unknown,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","calls":1,"total_time":0.078373,"max_time":0.078373,"mean_time":0.078373,"rows":10},{"query":"UPDATE \"ar_internal_metadata\" SET \"value\" = $1, \"updated_at\" = $2 WHERE \"ar_internal_metadata\".\"key\" = $3 /*application:test,db_config_name:ci,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","calls":1,"total_time":0.076856,"max_time":0.076856,"mean_time":0.076856,"rows":1},{"query":"SET SESSION timezone TO 'UTC' /*application:test,db_config_name:unknown,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","calls":1,"total_time":0.044863,"max_time":0.044863,"mean_time":0.044863,"rows":0},{"query":"SET SESSION statement_timeout TO '120s' /*application:test,db_config_name:unknown,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","calls":1,"total_time":0.038363,"max_time":0.038363,"mean_time":0.038363,"rows":0},{"query":"SET intervalstyle = iso_8601 /*application:test,db_config_name:unknown,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","calls":1,"total_time":0.034559,"max_time":0.034559,"mean_time":0.034559,"rows":0},{"query":"SELECT $1 FROM pg_proc WHERE proname = $2 /*application:test,db_config_name:ci,line:/lib/gitlab/database/schema_helpers.rb:20:in `function_exists?'*/","calls":1,"total_time":0.033893,"max_time":0.033893,"mean_time":0.033893,"rows":1},{"query":"SET standard_conforming_strings = on /*application:test,db_config_name:unknown,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","calls":1,"total_time":0.032853,"max_time":0.032853,"mean_time":0.032853,"rows":0},{"query":"set client_encoding to 'UTF8'","calls":1,"total_time":0.025851,"max_time":0.025851,"mean_time":0.025851,"rows":0},{"query":"set client_encoding to 'unicode'","calls":1,"total_time":0.020529,"max_time":0.020529,"mean_time":0.020529,"rows":0},{"query":"SET LOCAL lock_timeout TO '100ms' /*application:test,db_config_name:ci,line:/lib/gitlab/database/with_lock_retries.rb:172:in `execute'*/","calls":1,"total_time":0.015339,"max_time":0.015339,"mean_time":0.015339,"rows":0},{"query":"SET client_min_messages TO 'warning' /*application:test,db_config_name:unknown,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","calls":1,"total_time":0.013366,"max_time":0.013366,"mean_time":0.013366,"rows":0},{"query":"SELECT pg_try_advisory_lock($1)","calls":1,"total_time":0.013238,"max_time":0.013238,"mean_time":0.013238,"rows":1},{"query":"SELECT pg_advisory_unlock($1)","calls":1,"total_time":0.012585,"max_time":0.012585,"mean_time":0.012585,"rows":1},{"query":"RESET idle_in_transaction_session_timeout","calls":1,"total_time":0.009762,"max_time":0.009762,"mean_time":0.009762,"rows":0},{"query":"SELECT $1::regtype::oid","calls":1,"total_time":0.009282,"max_time":0.009282,"mean_time":0.009282,"rows":1},{"query":"SELECT current_database()","calls":1,"total_time":0.009191000000000001,"max_time":0.009191000000000001,"mean_time":0.009191000000000001,"rows":1},{"query":"SHOW TIME ZONE /*application:test,db_config_name:unknown,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","calls":1,"total_time":0.006331,"max_time":0.006331,"mean_time":0.006331,"rows":0},{"query":"COMMIT /*application:test,db_config_name:ci,line:/lib/gitlab/database.rb:365:in `commit'*/","calls":2,"total_time":0.0043560000000000005,"max_time":0.003024,"mean_time":0.0021780000000000002,"rows":0},{"query":"BEGIN /*application:test,db_config_name:ci,line:/lib/gitlab/database/with_lock_retries.rb:172:in `execute'*/","calls":1,"total_time":0.002924,"max_time":0.002924,"mean_time":0.002924,"rows":0},{"query":"SAVEPOINT active_record_1 /*application:test,db_config_name:ci,line:/lib/gitlab/database/with_lock_retries.rb:172:in `execute'*/","calls":1,"total_time":0.002924,"max_time":0.002924,"mean_time":0.002924,"rows":0},{"query":"RELEASE SAVEPOINT active_record_1 /*application:test,db_config_name:ci,line:/lib/gitlab/database/with_lock_retries.rb:129:in `run_block_with_lock_timeout'*/","calls":1,"total_time":0.002782,"max_time":0.002782,"mean_time":0.002782,"rows":0},{"query":"RESET lock_timeout /*application:test,db_config_name:ci,line:/lib/gitlab/database/with_lock_retries.rb:172:in `execute'*/","calls":1,"total_time":0.002119,"max_time":0.002119,"mean_time":0.002119,"rows":0},{"query":"BEGIN /*application:test,db_config_name:ci,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","calls":1,"total_time":0.001901,"max_time":0.001901,"mean_time":0.001901,"rows":0}]} diff --git a/notifier/spec/fixtures/migration-testing/v4/ci/up/CreateTestTable/migration.log b/notifier/spec/fixtures/migration-testing/v4/ci/up/CreateTestTable/migration.log index 6df6c212..1d03b48d 100644 --- a/notifier/spec/fixtures/migration-testing/v4/ci/up/CreateTestTable/migration.log +++ b/notifier/spec/fixtures/migration-testing/v4/ci/up/CreateTestTable/migration.log @@ -10,13 +10,13 @@ D, [2022-09-30T21:35:15.307263 #407] DEBUG -- : TRANSACTION (40.3ms) D, [2022-09-30T21:35:15.307923 #407] DEBUG -- : ↳ lib/gitlab/database/with_lock_retries.rb:172:in `execute' D, [2022-09-30T21:35:15.349481 #407] DEBUG -- :  (40.3ms) SET LOCAL lock_timeout TO '100ms' /*application:test,db_config_name:ci,line:/lib/gitlab/database/with_lock_retries.rb:172:in `execute'*/ D, [2022-09-30T21:35:15.350006 #407] DEBUG -- : ↳ lib/gitlab/database/with_lock_retries.rb:172:in `execute' -D, [2022-09-30T21:35:15.558189 #407] DEBUG -- :  (163.6ms) CREATE TABLE "test_tables" ("id" bigserial primary key, "stars" bigint DEFAULT 0 NOT NULL, "created_at" timestamp(6) NOT NULL, "updated_at" timestamp(6) NOT NULL, "title" text, "notes" text) /*application:test,db_config_name:ci,line:/lib/gitlab/database/migration_helpers.rb:100:in `block in create_table_with_constraints'*/ -D, [2022-09-30T21:35:15.558854 #407] DEBUG -- : ↳ lib/gitlab/database/migration_helpers.rb:100:in `block in create_table_with_constraints' +D, [2022-09-30T21:35:15.558189 #407] DEBUG -- :  (163.6ms) CREATE TABLE "test_tables" ("id" bigserial primary key, "stars" bigint DEFAULT 0 NOT NULL, "created_at" timestamp(6) NOT NULL, "updated_at" timestamp(6) NOT NULL, "title" text, "notes" text) /*application:test,db_config_name:ci,line:/lib/gitlab/database/migration_helpers.rb:100:in `block in create_table'*/ +D, [2022-09-30T21:35:15.558854 #407] DEBUG -- : ↳ lib/gitlab/database/migration_helpers.rb:100:in `block in create_table' D, [2022-09-30T21:35:15.609068 #407] DEBUG -- :  (48.9ms) ALTER TABLE "test_tables" ADD CONSTRAINT "check_0770ba173a" CHECK (char_length("title") <= 128), ADD CONSTRAINT "check_9cfc473dbc" CHECK (char_length("notes") <= 1024) - /*application:test,db_config_name:ci,line:/lib/gitlab/database/migration_helpers.rb:128:in `block in create_table_with_constraints'*/ -D, [2022-09-30T21:35:15.609659 #407] DEBUG -- : ↳ lib/gitlab/database/migration_helpers.rb:128:in `block in create_table_with_constraints' + /*application:test,db_config_name:ci,line:/lib/gitlab/database/migration_helpers.rb:128:in `block in create_table'*/ +D, [2022-09-30T21:35:15.609659 #407] DEBUG -- : ↳ lib/gitlab/database/migration_helpers.rb:128:in `block in create_table' D, [2022-09-30T21:35:15.651807 #407] DEBUG -- : TRANSACTION (40.9ms) RELEASE SAVEPOINT active_record_1 /*application:test,db_config_name:ci,line:/lib/gitlab/database/with_lock_retries.rb:129:in `run_block_with_lock_timeout'*/ D, [2022-09-30T21:35:15.652541 #407] DEBUG -- : ↳ lib/gitlab/database/with_lock_retries.rb:129:in `run_block_with_lock_timeout' D, [2022-09-30T21:35:15.693612 #407] DEBUG -- :  (40.4ms) RESET idle_in_transaction_session_timeout; RESET lock_timeout /*application:test,db_config_name:ci,line:/lib/gitlab/database/with_lock_retries.rb:172:in `execute'*/ diff --git a/notifier/spec/fixtures/migration-testing/v4/ci/up/CreateTestTable/query-details.json b/notifier/spec/fixtures/migration-testing/v4/ci/up/CreateTestTable/query-details.json index 04924a66..1ef38a29 100644 --- a/notifier/spec/fixtures/migration-testing/v4/ci/up/CreateTestTable/query-details.json +++ b/notifier/spec/fixtures/migration-testing/v4/ci/up/CreateTestTable/query-details.json @@ -1 +1 @@ -[{"start_time":"2022-09-30T21:35:14.378819+00:00","end_time":"2022-09-30T21:35:14.420266+00:00","sql":"SELECT c.relname FROM pg_class c LEFT JOIN pg_namespace n ON n.oid = c.relnamespace WHERE n.nspname = ANY (current_schemas(false)) AND c.relname = 'schema_migrations' AND c.relkind IN ('r','p')","binds":[]},{"start_time":"2022-09-30T21:35:14.421989+00:00","end_time":"2022-09-30T21:35:14.462962+00:00","sql":"SELECT c.relname FROM pg_class c LEFT JOIN pg_namespace n ON n.oid = c.relnamespace WHERE n.nspname = ANY (current_schemas(false)) AND c.relname = 'ar_internal_metadata' AND c.relkind IN ('r','p')","binds":[]},{"start_time":"2022-09-30T21:35:14.463254+00:00","end_time":"2022-09-30T21:35:14.503718+00:00","sql":"SELECT current_database()","binds":[]},{"start_time":"2022-09-30T21:35:14.749223+00:00","end_time":"2022-09-30T21:35:14.789782+00:00","sql":"SET client_min_messages TO 'warning' /*application:test,db_config_name:unknown,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","binds":[]},{"start_time":"2022-09-30T21:35:14.790242+00:00","end_time":"2022-09-30T21:35:14.830588+00:00","sql":"SET standard_conforming_strings = on /*application:test,db_config_name:unknown,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","binds":[]},{"start_time":"2022-09-30T21:35:14.831059+00:00","end_time":"2022-09-30T21:35:14.871579+00:00","sql":"SET intervalstyle = iso_8601 /*application:test,db_config_name:unknown,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","binds":[]},{"start_time":"2022-09-30T21:35:14.872066+00:00","end_time":"2022-09-30T21:35:14.914119+00:00","sql":"SET SESSION statement_timeout TO '120s' /*application:test,db_config_name:unknown,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","binds":[]},{"start_time":"2022-09-30T21:35:14.914672+00:00","end_time":"2022-09-30T21:35:14.955523+00:00","sql":"SET SESSION timezone TO 'UTC' /*application:test,db_config_name:unknown,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","binds":[]},{"start_time":"2022-09-30T21:35:14.956158+00:00","end_time":"2022-09-30T21:35:14.998072+00:00","sql":"SELECT t.oid, t.typname\nFROM pg_type as t\nWHERE t.typname IN ('int2', 'int4', 'int8', 'oid', 'float4', 'float8', 'numeric', 'bool', 'timestamp', 'timestamptz')\n /*application:test,db_config_name:unknown,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","binds":[]},{"start_time":"2022-09-30T21:35:14.998826+00:00","end_time":"2022-09-30T21:35:15.039199+00:00","sql":"SHOW TIME ZONE /*application:test,db_config_name:unknown,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","binds":[]},{"start_time":"2022-09-30T21:35:15.080047+00:00","end_time":"2022-09-30T21:35:15.121319+00:00","sql":"SELECT pg_try_advisory_lock(3005434223539248480)","binds":[]},{"start_time":"2022-09-30T21:35:15.122172+00:00","end_time":"2022-09-30T21:35:15.203941+00:00","sql":"SELECT \"schema_migrations\".\"version\" FROM \"schema_migrations\" ORDER BY \"schema_migrations\".\"version\" ASC /*application:test,db_config_name:ci,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","binds":[]},{"start_time":"2022-09-30T21:35:15.225024+00:00","end_time":"2022-09-30T21:35:15.266391+00:00","sql":"BEGIN /*application:test,db_config_name:ci,line:/lib/gitlab/database/with_lock_retries.rb:172:in `execute'*/","binds":[]},{"start_time":"2022-09-30T21:35:15.266909+00:00","end_time":"2022-09-30T21:35:15.308936+00:00","sql":"SAVEPOINT active_record_1 /*application:test,db_config_name:ci,line:/lib/gitlab/database/with_lock_retries.rb:172:in `execute'*/","binds":[]},{"start_time":"2022-09-30T21:35:15.309116+00:00","end_time":"2022-09-30T21:35:15.350152+00:00","sql":"SET LOCAL lock_timeout TO '100ms' /*application:test,db_config_name:ci,line:/lib/gitlab/database/with_lock_retries.rb:172:in `execute'*/","binds":[]},{"start_time":"2022-09-30T21:35:15.352018+00:00","end_time":"2022-09-30T21:35:15.393656+00:00","sql":"SELECT 'bigint'::regtype::oid","binds":[]},{"start_time":"2022-09-30T21:35:15.394526+00:00","end_time":"2022-09-30T21:35:15.558990+00:00","sql":"CREATE TABLE \"test_tables\" (\"id\" bigserial primary key, \"stars\" bigint DEFAULT 0 NOT NULL, \"created_at\" timestamp(6) NOT NULL, \"updated_at\" timestamp(6) NOT NULL, \"title\" text, \"notes\" text) /*application:test,db_config_name:ci,line:/lib/gitlab/database/migration_helpers.rb:100:in `block in create_table_with_constraints'*/","binds":[]},{"start_time":"2022-09-30T21:35:15.560120+00:00","end_time":"2022-09-30T21:35:15.609799+00:00","sql":"ALTER TABLE \"test_tables\"\nADD CONSTRAINT \"check_0770ba173a\" CHECK (char_length(\"title\") \u003c= 128),\nADD CONSTRAINT \"check_9cfc473dbc\" CHECK (char_length(\"notes\") \u003c= 1024)\n /*application:test,db_config_name:ci,line:/lib/gitlab/database/migration_helpers.rb:128:in `block in create_table_with_constraints'*/","binds":[]},{"start_time":"2022-09-30T21:35:15.610837+00:00","end_time":"2022-09-30T21:35:15.652716+00:00","sql":"RELEASE SAVEPOINT active_record_1 /*application:test,db_config_name:ci,line:/lib/gitlab/database/with_lock_retries.rb:129:in `run_block_with_lock_timeout'*/","binds":[]},{"start_time":"2022-09-30T21:35:15.653103+00:00","end_time":"2022-09-30T21:35:15.694280+00:00","sql":"RESET idle_in_transaction_session_timeout; RESET lock_timeout /*application:test,db_config_name:ci,line:/lib/gitlab/database/with_lock_retries.rb:172:in `execute'*/","binds":[]},{"start_time":"2022-09-30T21:35:15.695075+00:00","end_time":"2022-09-30T21:35:15.777347+00:00","sql":"SELECT c.relname FROM pg_class c LEFT JOIN pg_namespace n ON n.oid = c.relnamespace WHERE n.nspname = ANY (current_schemas(false)) AND c.relkind IN ('r','v','m','p','f')","binds":[]},{"start_time":"2022-09-30T21:35:15.781366+00:00","end_time":"2022-09-30T21:35:15.826089+00:00","sql":"INSERT INTO \"schema_migrations\" (\"version\") VALUES ('20210602144718') RETURNING \"version\" /*application:test,db_config_name:ci,line:/lib/gitlab/database.rb:332:in `block in transaction'*/","binds":[]},{"start_time":"2022-09-30T21:35:15.827156+00:00","end_time":"2022-09-30T21:35:15.868431+00:00","sql":"COMMIT /*application:test,db_config_name:ci,line:/lib/gitlab/database.rb:365:in `commit'*/","binds":[]},{"start_time":"2022-09-30T21:35:15.869238+00:00","end_time":"2022-09-30T21:35:15.924595+00:00","sql":"SELECT a.attname, format_type(a.atttypid, a.atttypmod),\n pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod,\n c.collname, col_description(a.attrelid, a.attnum) AS comment\n FROM pg_attribute a\n LEFT JOIN pg_attrdef d ON a.attrelid = d.adrelid AND a.attnum = d.adnum\n LEFT JOIN pg_type t ON a.atttypid = t.oid\n LEFT JOIN pg_collation c ON a.attcollation = c.oid AND a.attcollation \u003c\u003e t.typcollation\n WHERE a.attrelid = '\"ar_internal_metadata\"'::regclass\n AND a.attnum \u003e 0 AND NOT a.attisdropped\n ORDER BY a.attnum\n","binds":[]},{"start_time":"2022-09-30T21:35:15.926285+00:00","end_time":"2022-09-30T21:35:15.985045+00:00","sql":"SELECT \"ar_internal_metadata\".* FROM \"ar_internal_metadata\" WHERE \"ar_internal_metadata\".\"key\" = 'environment' LIMIT 1 /*application:test,db_config_name:ci,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","binds":[]},{"start_time":"2022-09-30T21:35:15.990380+00:00","end_time":"2022-09-30T21:35:16.039981+00:00","sql":"BEGIN /*application:test,db_config_name:ci,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","binds":[]},{"start_time":"2022-09-30T21:35:16.040111+00:00","end_time":"2022-09-30T21:35:16.085834+00:00","sql":"UPDATE \"ar_internal_metadata\" SET \"value\" = 'test', \"updated_at\" = '2022-09-30 21:35:15.988876' WHERE \"ar_internal_metadata\".\"key\" = 'environment' /*application:test,db_config_name:ci,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","binds":[]},{"start_time":"2022-09-30T21:35:16.086767+00:00","end_time":"2022-09-30T21:35:16.142340+00:00","sql":"COMMIT /*application:test,db_config_name:ci,line:/lib/gitlab/database.rb:365:in `commit'*/","binds":[]},{"start_time":"2022-09-30T21:35:16.142609+00:00","end_time":"2022-09-30T21:35:16.184183+00:00","sql":"SELECT pg_advisory_unlock(3005434223539248480)","binds":[]},{"start_time":"2022-09-30T21:35:16.225334+00:00","end_time":"2022-09-30T21:35:16.418074+00:00","sql":"select pg_database_size(current_database()) /*application:test,db_config_name:ci,line:/lib/gitlab/database/migrations/observers/total_database_size_change.rb:25:in `get_total_database_size'*/","binds":[]}] +[{"start_time":"2022-09-30T21:35:14.378819+00:00","end_time":"2022-09-30T21:35:14.420266+00:00","sql":"SELECT c.relname FROM pg_class c LEFT JOIN pg_namespace n ON n.oid = c.relnamespace WHERE n.nspname = ANY (current_schemas(false)) AND c.relname = 'schema_migrations' AND c.relkind IN ('r','p')","binds":[]},{"start_time":"2022-09-30T21:35:14.421989+00:00","end_time":"2022-09-30T21:35:14.462962+00:00","sql":"SELECT c.relname FROM pg_class c LEFT JOIN pg_namespace n ON n.oid = c.relnamespace WHERE n.nspname = ANY (current_schemas(false)) AND c.relname = 'ar_internal_metadata' AND c.relkind IN ('r','p')","binds":[]},{"start_time":"2022-09-30T21:35:14.463254+00:00","end_time":"2022-09-30T21:35:14.503718+00:00","sql":"SELECT current_database()","binds":[]},{"start_time":"2022-09-30T21:35:14.749223+00:00","end_time":"2022-09-30T21:35:14.789782+00:00","sql":"SET client_min_messages TO 'warning' /*application:test,db_config_name:unknown,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","binds":[]},{"start_time":"2022-09-30T21:35:14.790242+00:00","end_time":"2022-09-30T21:35:14.830588+00:00","sql":"SET standard_conforming_strings = on /*application:test,db_config_name:unknown,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","binds":[]},{"start_time":"2022-09-30T21:35:14.831059+00:00","end_time":"2022-09-30T21:35:14.871579+00:00","sql":"SET intervalstyle = iso_8601 /*application:test,db_config_name:unknown,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","binds":[]},{"start_time":"2022-09-30T21:35:14.872066+00:00","end_time":"2022-09-30T21:35:14.914119+00:00","sql":"SET SESSION statement_timeout TO '120s' /*application:test,db_config_name:unknown,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","binds":[]},{"start_time":"2022-09-30T21:35:14.914672+00:00","end_time":"2022-09-30T21:35:14.955523+00:00","sql":"SET SESSION timezone TO 'UTC' /*application:test,db_config_name:unknown,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","binds":[]},{"start_time":"2022-09-30T21:35:14.956158+00:00","end_time":"2022-09-30T21:35:14.998072+00:00","sql":"SELECT t.oid, t.typname\nFROM pg_type as t\nWHERE t.typname IN ('int2', 'int4', 'int8', 'oid', 'float4', 'float8', 'numeric', 'bool', 'timestamp', 'timestamptz')\n /*application:test,db_config_name:unknown,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","binds":[]},{"start_time":"2022-09-30T21:35:14.998826+00:00","end_time":"2022-09-30T21:35:15.039199+00:00","sql":"SHOW TIME ZONE /*application:test,db_config_name:unknown,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","binds":[]},{"start_time":"2022-09-30T21:35:15.080047+00:00","end_time":"2022-09-30T21:35:15.121319+00:00","sql":"SELECT pg_try_advisory_lock(3005434223539248480)","binds":[]},{"start_time":"2022-09-30T21:35:15.122172+00:00","end_time":"2022-09-30T21:35:15.203941+00:00","sql":"SELECT \"schema_migrations\".\"version\" FROM \"schema_migrations\" ORDER BY \"schema_migrations\".\"version\" ASC /*application:test,db_config_name:ci,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","binds":[]},{"start_time":"2022-09-30T21:35:15.225024+00:00","end_time":"2022-09-30T21:35:15.266391+00:00","sql":"BEGIN /*application:test,db_config_name:ci,line:/lib/gitlab/database/with_lock_retries.rb:172:in `execute'*/","binds":[]},{"start_time":"2022-09-30T21:35:15.266909+00:00","end_time":"2022-09-30T21:35:15.308936+00:00","sql":"SAVEPOINT active_record_1 /*application:test,db_config_name:ci,line:/lib/gitlab/database/with_lock_retries.rb:172:in `execute'*/","binds":[]},{"start_time":"2022-09-30T21:35:15.309116+00:00","end_time":"2022-09-30T21:35:15.350152+00:00","sql":"SET LOCAL lock_timeout TO '100ms' /*application:test,db_config_name:ci,line:/lib/gitlab/database/with_lock_retries.rb:172:in `execute'*/","binds":[]},{"start_time":"2022-09-30T21:35:15.352018+00:00","end_time":"2022-09-30T21:35:15.393656+00:00","sql":"SELECT 'bigint'::regtype::oid","binds":[]},{"start_time":"2022-09-30T21:35:15.394526+00:00","end_time":"2022-09-30T21:35:15.558990+00:00","sql":"CREATE TABLE \"test_tables\" (\"id\" bigserial primary key, \"stars\" bigint DEFAULT 0 NOT NULL, \"created_at\" timestamp(6) NOT NULL, \"updated_at\" timestamp(6) NOT NULL, \"title\" text, \"notes\" text) /*application:test,db_config_name:ci,line:/lib/gitlab/database/migration_helpers.rb:100:in `block in create_table'*/","binds":[]},{"start_time":"2022-09-30T21:35:15.560120+00:00","end_time":"2022-09-30T21:35:15.609799+00:00","sql":"ALTER TABLE \"test_tables\"\nADD CONSTRAINT \"check_0770ba173a\" CHECK (char_length(\"title\") \u003c= 128),\nADD CONSTRAINT \"check_9cfc473dbc\" CHECK (char_length(\"notes\") \u003c= 1024)\n /*application:test,db_config_name:ci,line:/lib/gitlab/database/migration_helpers.rb:128:in `block in create_table'*/","binds":[]},{"start_time":"2022-09-30T21:35:15.610837+00:00","end_time":"2022-09-30T21:35:15.652716+00:00","sql":"RELEASE SAVEPOINT active_record_1 /*application:test,db_config_name:ci,line:/lib/gitlab/database/with_lock_retries.rb:129:in `run_block_with_lock_timeout'*/","binds":[]},{"start_time":"2022-09-30T21:35:15.653103+00:00","end_time":"2022-09-30T21:35:15.694280+00:00","sql":"RESET idle_in_transaction_session_timeout; RESET lock_timeout /*application:test,db_config_name:ci,line:/lib/gitlab/database/with_lock_retries.rb:172:in `execute'*/","binds":[]},{"start_time":"2022-09-30T21:35:15.695075+00:00","end_time":"2022-09-30T21:35:15.777347+00:00","sql":"SELECT c.relname FROM pg_class c LEFT JOIN pg_namespace n ON n.oid = c.relnamespace WHERE n.nspname = ANY (current_schemas(false)) AND c.relkind IN ('r','v','m','p','f')","binds":[]},{"start_time":"2022-09-30T21:35:15.781366+00:00","end_time":"2022-09-30T21:35:15.826089+00:00","sql":"INSERT INTO \"schema_migrations\" (\"version\") VALUES ('20210602144718') RETURNING \"version\" /*application:test,db_config_name:ci,line:/lib/gitlab/database.rb:332:in `block in transaction'*/","binds":[]},{"start_time":"2022-09-30T21:35:15.827156+00:00","end_time":"2022-09-30T21:35:15.868431+00:00","sql":"COMMIT /*application:test,db_config_name:ci,line:/lib/gitlab/database.rb:365:in `commit'*/","binds":[]},{"start_time":"2022-09-30T21:35:15.869238+00:00","end_time":"2022-09-30T21:35:15.924595+00:00","sql":"SELECT a.attname, format_type(a.atttypid, a.atttypmod),\n pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod,\n c.collname, col_description(a.attrelid, a.attnum) AS comment\n FROM pg_attribute a\n LEFT JOIN pg_attrdef d ON a.attrelid = d.adrelid AND a.attnum = d.adnum\n LEFT JOIN pg_type t ON a.atttypid = t.oid\n LEFT JOIN pg_collation c ON a.attcollation = c.oid AND a.attcollation \u003c\u003e t.typcollation\n WHERE a.attrelid = '\"ar_internal_metadata\"'::regclass\n AND a.attnum \u003e 0 AND NOT a.attisdropped\n ORDER BY a.attnum\n","binds":[]},{"start_time":"2022-09-30T21:35:15.926285+00:00","end_time":"2022-09-30T21:35:15.985045+00:00","sql":"SELECT \"ar_internal_metadata\".* FROM \"ar_internal_metadata\" WHERE \"ar_internal_metadata\".\"key\" = 'environment' LIMIT 1 /*application:test,db_config_name:ci,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","binds":[]},{"start_time":"2022-09-30T21:35:15.990380+00:00","end_time":"2022-09-30T21:35:16.039981+00:00","sql":"BEGIN /*application:test,db_config_name:ci,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","binds":[]},{"start_time":"2022-09-30T21:35:16.040111+00:00","end_time":"2022-09-30T21:35:16.085834+00:00","sql":"UPDATE \"ar_internal_metadata\" SET \"value\" = 'test', \"updated_at\" = '2022-09-30 21:35:15.988876' WHERE \"ar_internal_metadata\".\"key\" = 'environment' /*application:test,db_config_name:ci,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","binds":[]},{"start_time":"2022-09-30T21:35:16.086767+00:00","end_time":"2022-09-30T21:35:16.142340+00:00","sql":"COMMIT /*application:test,db_config_name:ci,line:/lib/gitlab/database.rb:365:in `commit'*/","binds":[]},{"start_time":"2022-09-30T21:35:16.142609+00:00","end_time":"2022-09-30T21:35:16.184183+00:00","sql":"SELECT pg_advisory_unlock(3005434223539248480)","binds":[]},{"start_time":"2022-09-30T21:35:16.225334+00:00","end_time":"2022-09-30T21:35:16.418074+00:00","sql":"select pg_database_size(current_database()) /*application:test,db_config_name:ci,line:/lib/gitlab/database/migrations/observers/total_database_size_change.rb:25:in `get_total_database_size'*/","binds":[]}] diff --git a/notifier/spec/fixtures/migration-testing/v4/expected-comment.txt b/notifier/spec/fixtures/migration-testing/v4/expected-comment.txt index db875243..b60ee581 100644 --- a/notifier/spec/fixtures/migration-testing/v4/expected-comment.txt +++ b/notifier/spec/fixtures/migration-testing/v4/expected-comment.txt @@ -3,7 +3,7 @@ | | 3 Warnings | | --------- | -------------------- | -| :warning: | 20210602144718 - CreateTestTable had a query that [exceeded timing guidelines](https://docs.gitlab.com/ee/development/query_performance.html#timing-guidelines-for-queries). Run time
should not exceed 100ms, but it was 192.8ms. Please consider possible options to improve the query
performance.
CREATE TABLE "test_tables" ("id" bigserial primary key, "stars" bigint
DEFAULT 0 NOT NULL, "created_at" timestamp(6) NOT NULL, "updated_at" timestamp(6) NOT NULL, "title"
text, "notes" text)
/*application:test,db_config_name:main,line:/lib/gitlab/database/migration_helpers.rb:100:in
`block in create_table_with_constraints'*/
| +| :warning: | 20210602144718 - CreateTestTable had a query that [exceeded timing guidelines](https://docs.gitlab.com/ee/development/query_performance.html#timing-guidelines-for-queries). Run time
should not exceed 100ms, but it was 192.8ms. Please consider possible options to improve the query
performance.
CREATE TABLE "test_tables" ("id" bigserial primary key, "stars" bigint
DEFAULT 0 NOT NULL, "created_at" timestamp(6) NOT NULL, "updated_at" timestamp(6) NOT NULL, "title"
text, "notes" text)
/*application:test,db_config_name:main,line:/lib/gitlab/database/migration_helpers.rb:100:in
`block in create_table'*/
| | :warning: | 20210603233011 - RegularMigrationWithFiveSecondQuery had a query that [exceeded timing
guidelines](https://docs.gitlab.com/ee/development/query_performance.html#timing-guidelines-for-queries). Run time should not exceed 100ms, but it was 5005.1ms. Please consider possible options
to improve the query performance.
SELECT pg_sleep($1)
| | :warning: | 20990604233157 - MigrationThrowsException did not complete successfully, check the job log
for details | @@ -45,8 +45,8 @@ Migrations included in this change have been executed on gitlab.com data for tes | Calls | Total Time | Max Time | Mean Time | Rows | Query | | ----- | ---------- | -------- | --------- | ---- | ----- | -| 1 | 192.8 ms | 192.8 ms | 192.8 ms | 0 |
CREATE TABLE "test_tables" ("id" bigserial primary key, "stars" bigint DEFAULT 0 NOT NULL, "created_at" timestamp(6) NOT NULL, "updated_at" timestamp(6) NOT NULL, "title" text, "notes" text) /*application:test,db_config_name:main,line:/lib/gitlab/database/migration_helpers.rb:100:in `block in create_table_with_constraints'*/
| -| 1 | 6.6 ms | 6.6 ms | 6.6 ms | 0 |
ALTER TABLE "test_tables" ADD CONSTRAINT "check_0770ba173a" CHECK (char_length("title") <= 128), ADD CONSTRAINT "check_9cfc473dbc" CHECK (char_length("notes") <= 1024) /*application:test,db_config_name:main,line:/lib/gitlab/database/migration_helpers.rb:128:in `block in create_table_with_constraints'*/
| +| 1 | 192.8 ms | 192.8 ms | 192.8 ms | 0 |
CREATE TABLE "test_tables" ("id" bigserial primary key, "stars" bigint DEFAULT 0 NOT NULL, "created_at" timestamp(6) NOT NULL, "updated_at" timestamp(6) NOT NULL, "title" text, "notes" text) /*application:test,db_config_name:main,line:/lib/gitlab/database/migration_helpers.rb:100:in `block in create_table'*/
| +| 1 | 6.6 ms | 6.6 ms | 6.6 ms | 0 |
ALTER TABLE "test_tables" ADD CONSTRAINT "check_0770ba173a" CHECK (char_length("title") <= 128), ADD CONSTRAINT "check_9cfc473dbc" CHECK (char_length("notes") <= 1024) /*application:test,db_config_name:main,line:/lib/gitlab/database/migration_helpers.rb:128:in `block in create_table'*/
| | 1 | 0.0 ms | 0.0 ms | 0.0 ms | 1 |
SELECT $1::regtype::oid
| @@ -324,7 +324,7 @@ IjowLCJzdWNjZXNzIjpmYWxzZX1dfQ== | | 3 Warnings | | --------- | -------------------- | -| :warning: | 20210602144718 - CreateTestTable had a query that [exceeded timing guidelines](https://docs.gitlab.com/ee/development/query_performance.html#timing-guidelines-for-queries). Run time
should not exceed 100ms, but it was 122.94ms. Please consider possible options to improve the query
performance.
CREATE TABLE "test_tables" ("id" bigserial primary key, "stars" bigint
DEFAULT 0 NOT NULL, "created_at" timestamp(6) NOT NULL, "updated_at" timestamp(6) NOT NULL, "title"
text, "notes" text)
/*application:test,db_config_name:ci,line:/lib/gitlab/database/migration_helpers.rb:100:in
`block in create_table_with_constraints'*/
| +| :warning: | 20210602144718 - CreateTestTable had a query that [exceeded timing guidelines](https://docs.gitlab.com/ee/development/query_performance.html#timing-guidelines-for-queries). Run time
should not exceed 100ms, but it was 122.94ms. Please consider possible options to improve the query
performance.
CREATE TABLE "test_tables" ("id" bigserial primary key, "stars" bigint
DEFAULT 0 NOT NULL, "created_at" timestamp(6) NOT NULL, "updated_at" timestamp(6) NOT NULL, "title"
text, "notes" text)
/*application:test,db_config_name:ci,line:/lib/gitlab/database/migration_helpers.rb:100:in
`block in create_table'*/
| | :warning: | 20210603233011 - RegularMigrationWithFiveSecondQuery had a query that [exceeded timing
guidelines](https://docs.gitlab.com/ee/development/query_performance.html#timing-guidelines-for-queries). Run time should not exceed 100ms, but it was 5005.1ms. Please consider possible options
to improve the query performance.
SELECT pg_sleep($1)
| | :warning: | 20990604233157 - MigrationThrowsException did not complete successfully, check the job log
for details | @@ -366,8 +366,8 @@ Migrations included in this change have been executed on gitlab.com data for tes | Calls | Total Time | Max Time | Mean Time | Rows | Query | | ----- | ---------- | -------- | --------- | ---- | ----- | -| 1 | 122.9 ms | 122.9 ms | 122.9 ms | 0 |
CREATE TABLE "test_tables" ("id" bigserial primary key, "stars" bigint DEFAULT 0 NOT NULL, "created_at" timestamp(6) NOT NULL, "updated_at" timestamp(6) NOT NULL, "title" text, "notes" text) /*application:test,db_config_name:ci,line:/lib/gitlab/database/migration_helpers.rb:100:in `block in create_table_with_constraints'*/
| -| 1 | 8.3 ms | 8.3 ms | 8.3 ms | 0 |
ALTER TABLE "test_tables" ADD CONSTRAINT "check_0770ba173a" CHECK (char_length("title") <= 128), ADD CONSTRAINT "check_9cfc473dbc" CHECK (char_length("notes") <= 1024) /*application:test,db_config_name:ci,line:/lib/gitlab/database/migration_helpers.rb:128:in `block in create_table_with_constraints'*/
| +| 1 | 122.9 ms | 122.9 ms | 122.9 ms | 0 |
CREATE TABLE "test_tables" ("id" bigserial primary key, "stars" bigint DEFAULT 0 NOT NULL, "created_at" timestamp(6) NOT NULL, "updated_at" timestamp(6) NOT NULL, "title" text, "notes" text) /*application:test,db_config_name:ci,line:/lib/gitlab/database/migration_helpers.rb:100:in `block in create_table'*/
| +| 1 | 8.3 ms | 8.3 ms | 8.3 ms | 0 |
ALTER TABLE "test_tables" ADD CONSTRAINT "check_0770ba173a" CHECK (char_length("title") <= 128), ADD CONSTRAINT "check_9cfc473dbc" CHECK (char_length("notes") <= 1024) /*application:test,db_config_name:ci,line:/lib/gitlab/database/migration_helpers.rb:128:in `block in create_table'*/
| | 1 | 0.0 ms | 0.0 ms | 0.0 ms | 1 |
SELECT $1::regtype::oid
| diff --git a/notifier/spec/fixtures/migration-testing/v4/main/up/CreateTestTable/migration-stats.json b/notifier/spec/fixtures/migration-testing/v4/main/up/CreateTestTable/migration-stats.json index c155bff8..8e1ee27e 100644 --- a/notifier/spec/fixtures/migration-testing/v4/main/up/CreateTestTable/migration-stats.json +++ b/notifier/spec/fixtures/migration-testing/v4/main/up/CreateTestTable/migration-stats.json @@ -1 +1 @@ -{"version":20210602144718,"name":"CreateTestTable","walltime":2.1985140219330788,"success":true,"total_database_size_change":24576,"query_statistics":[{"query":"CREATE TABLE \"test_tables\" (\"id\" bigserial primary key, \"stars\" bigint DEFAULT 0 NOT NULL, \"created_at\" timestamp(6) NOT NULL, \"updated_at\" timestamp(6) NOT NULL, \"title\" text, \"notes\" text) /*application:test,db_config_name:main,line:/lib/gitlab/database/migration_helpers.rb:100:in `block in create_table_with_constraints'*/","calls":1,"total_time":192.802332,"max_time":192.802332,"mean_time":192.802332,"rows":0},{"query":"select pg_database_size(current_database()) /*application:test,db_config_name:main,line:/lib/gitlab/database/migrations/observers/total_database_size_change.rb:25:in `get_total_database_size'*/","calls":1,"total_time":144.38915,"max_time":144.38915,"mean_time":144.38915,"rows":1},{"query":"ALTER TABLE \"test_tables\"\nADD CONSTRAINT \"check_0770ba173a\" CHECK (char_length(\"title\") \u003c= 128),\nADD CONSTRAINT \"check_9cfc473dbc\" CHECK (char_length(\"notes\") \u003c= 1024)\n /*application:test,db_config_name:main,line:/lib/gitlab/database/migration_helpers.rb:128:in `block in create_table_with_constraints'*/","calls":1,"total_time":6.602411,"max_time":6.602411,"mean_time":6.602411,"rows":0},{"query":"SELECT c.relname FROM pg_class c LEFT JOIN pg_namespace n ON n.oid = c.relnamespace WHERE n.nspname = ANY (current_schemas($1)) AND c.relkind IN ($2,$3,$4,$5,$6)","calls":1,"total_time":4.722614,"max_time":4.722614,"mean_time":4.722614,"rows":603},{"query":"INSERT INTO \"schema_migrations\" (\"version\") VALUES ($1) RETURNING \"version\" /*application:test,db_config_name:main,line:/lib/gitlab/database.rb:332:in `block in transaction'*/","calls":1,"total_time":3.102035,"max_time":3.102035,"mean_time":3.102035,"rows":1},{"query":"SELECT \"schema_migrations\".\"version\" FROM \"schema_migrations\" ORDER BY \"schema_migrations\".\"version\" ASC /*application:test,db_config_name:main,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","calls":1,"total_time":2.6275999999999997,"max_time":2.6275999999999997,"mean_time":2.6275999999999997,"rows":5385},{"query":"SELECT \"ar_internal_metadata\".* FROM \"ar_internal_metadata\" WHERE \"ar_internal_metadata\".\"key\" = $1 LIMIT $2 /*application:test,db_config_name:main,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","calls":1,"total_time":1.560201,"max_time":1.560201,"mean_time":1.560201,"rows":1},{"query":"SELECT a.attname, format_type(a.atttypid, a.atttypmod),\n pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod,\n c.collname, col_description(a.attrelid, a.attnum) AS comment\n FROM pg_attribute a\n LEFT JOIN pg_attrdef d ON a.attrelid = d.adrelid AND a.attnum = d.adnum\n LEFT JOIN pg_type t ON a.atttypid = t.oid\n LEFT JOIN pg_collation c ON a.attcollation = c.oid AND a.attcollation \u003c\u003e t.typcollation\n WHERE a.attrelid = $1::regclass\n AND a.attnum \u003e $2 AND NOT a.attisdropped\n ORDER BY a.attnum","calls":1,"total_time":0.623014,"max_time":0.623014,"mean_time":0.623014,"rows":4},{"query":"select pg_stat_statements_reset() /*application:test,db_config_name:main,line:/lib/gitlab/database/migrations/observers/query_statistics.rb:16:in `before'*/","calls":1,"total_time":0.217699,"max_time":0.217699,"mean_time":0.217699,"rows":1},{"query":"SELECT c.relname FROM pg_class c LEFT JOIN pg_namespace n ON n.oid = c.relnamespace WHERE n.nspname = ANY (current_schemas($1)) AND c.relname = $2 AND c.relkind IN ($3,$4)","calls":3,"total_time":0.182048,"max_time":0.06928899999999999,"mean_time":0.06068266666666666,"rows":3},{"query":"SELECT t.oid, t.typname\nFROM pg_type as t\nWHERE t.typname IN ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10)\n /*application:test,db_config_name:unknown,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","calls":1,"total_time":0.10199000000000001,"max_time":0.10199000000000001,"mean_time":0.10199000000000001,"rows":10},{"query":"SET LOCAL lock_timeout TO '100ms' /*application:test,db_config_name:main,line:/lib/gitlab/database/with_lock_retries.rb:172:in `execute'*/","calls":1,"total_time":0.041161,"max_time":0.041161,"mean_time":0.041161,"rows":0},{"query":"SET SESSION timezone TO 'UTC' /*application:test,db_config_name:unknown,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","calls":1,"total_time":0.04011,"max_time":0.04011,"mean_time":0.04011,"rows":0},{"query":"UPDATE \"ar_internal_metadata\" SET \"value\" = $1, \"updated_at\" = $2 WHERE \"ar_internal_metadata\".\"key\" = $3 /*application:test,db_config_name:main,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","calls":1,"total_time":0.039198,"max_time":0.039198,"mean_time":0.039198,"rows":1},{"query":"SET standard_conforming_strings = on /*application:test,db_config_name:unknown,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","calls":1,"total_time":0.029721,"max_time":0.029721,"mean_time":0.029721,"rows":0},{"query":"set client_encoding to 'unicode'","calls":1,"total_time":0.028651,"max_time":0.028651,"mean_time":0.028651,"rows":0},{"query":"SELECT $1 FROM pg_proc WHERE proname = $2 /*application:test,db_config_name:main,line:/lib/gitlab/database/schema_helpers.rb:20:in `function_exists?'*/","calls":1,"total_time":0.027299999999999998,"max_time":0.027299999999999998,"mean_time":0.027299999999999998,"rows":1},{"query":"set client_encoding to 'unicode'","calls":1,"total_time":0.028651,"max_time":0.028651,"mean_time":0.028651,"rows":0},{"query":"SELECT \"feature_gates\".* FROM \"feature_gates\" WHERE \"feature_gates\".\"feature_key\" = $1 /*application:test,db_config_name:main,line:/lib/feature.rb:249:in `block in current_feature_value'*/","calls":1,"total_time":0.018507,"max_time":0.018507,"mean_time":0.018507,"rows":0},{"query":"SET SESSION statement_timeout TO '120s' /*application:test,db_config_name:unknown,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","calls":1,"total_time":0.027209,"max_time":0.027209,"mean_time":0.027209,"rows":0},{"query":"SET intervalstyle = iso_8601 /*application:test,db_config_name:unknown,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","calls":1,"total_time":0.025874,"max_time":0.025874,"mean_time":0.025874,"rows":0},{"query":"set client_encoding to 'UTF8'","calls":1,"total_time":0.022612,"max_time":0.022612,"mean_time":0.022612,"rows":0},{"query":"SELECT pg_try_advisory_lock($1)","calls":1,"total_time":0.013618,"max_time":0.013618,"mean_time":0.013618,"rows":1},{"query":"SET client_min_messages TO 'warning' /*application:test,db_config_name:unknown,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","calls":1,"total_time":0.011879,"max_time":0.011879,"mean_time":0.011879,"rows":0},{"query":"SELECT pg_advisory_unlock($1)","calls":1,"total_time":0.010336999999999999,"max_time":0.010336999999999999,"mean_time":0.010336999999999999,"rows":1},{"query":"RESET idle_in_transaction_session_timeout","calls":1,"total_time":0.008307,"max_time":0.008307,"mean_time":0.008307,"rows":0},{"query":"SELECT current_database()","calls":1,"total_time":0.007934,"max_time":0.007934,"mean_time":0.007934,"rows":1},{"query":"SELECT $1::regtype::oid","calls":1,"total_time":0.006556,"max_time":0.006556,"mean_time":0.006556,"rows":1},{"query":"SHOW TIME ZONE /*application:test,db_config_name:unknown,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","calls":1,"total_time":0.0064,"max_time":0.0064,"mean_time":0.0064,"rows":0},{"query":"SAVEPOINT active_record_1 /*application:test,db_config_name:main,line:/lib/gitlab/database/with_lock_retries.rb:172:in `execute'*/","calls":1,"total_time":0.003657,"max_time":0.003657,"mean_time":0.003657,"rows":0},{"query":"RESET lock_timeout /*application:test,db_config_name:main,line:/lib/gitlab/database/with_lock_retries.rb:172:in `execute'*/","calls":1,"total_time":0.003546,"max_time":0.003546,"mean_time":0.003546,"rows":0},{"query":"COMMIT /*application:test,db_config_name:main,line:/lib/gitlab/database.rb:365:in `commit'*/","calls":2,"total_time":0.003086,"max_time":0.001613,"mean_time":0.001543,"rows":0},{"query":"RELEASE SAVEPOINT active_record_1 /*application:test,db_config_name:main,line:/lib/gitlab/database/with_lock_retries.rb:129:in `run_block_with_lock_timeout'*/","calls":1,"total_time":0.002484,"max_time":0.002484,"mean_time":0.002484,"rows":0},{"query":"BEGIN /*application:test,db_config_name:main,line:/lib/gitlab/database/with_lock_retries.rb:172:in `execute'*/","calls":1,"total_time":0.001829,"max_time":0.001829,"mean_time":0.001829,"rows":0},{"query":"BEGIN /*application:test,db_config_name:main,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","calls":1,"total_time":0.00138,"max_time":0.00138,"mean_time":0.00138,"rows":0}]} \ No newline at end of file +{"version":20210602144718,"name":"CreateTestTable","walltime":2.1985140219330788,"success":true,"total_database_size_change":24576,"query_statistics":[{"query":"CREATE TABLE \"test_tables\" (\"id\" bigserial primary key, \"stars\" bigint DEFAULT 0 NOT NULL, \"created_at\" timestamp(6) NOT NULL, \"updated_at\" timestamp(6) NOT NULL, \"title\" text, \"notes\" text) /*application:test,db_config_name:main,line:/lib/gitlab/database/migration_helpers.rb:100:in `block in create_table'*/","calls":1,"total_time":192.802332,"max_time":192.802332,"mean_time":192.802332,"rows":0},{"query":"select pg_database_size(current_database()) /*application:test,db_config_name:main,line:/lib/gitlab/database/migrations/observers/total_database_size_change.rb:25:in `get_total_database_size'*/","calls":1,"total_time":144.38915,"max_time":144.38915,"mean_time":144.38915,"rows":1},{"query":"ALTER TABLE \"test_tables\"\nADD CONSTRAINT \"check_0770ba173a\" CHECK (char_length(\"title\") \u003c= 128),\nADD CONSTRAINT \"check_9cfc473dbc\" CHECK (char_length(\"notes\") \u003c= 1024)\n /*application:test,db_config_name:main,line:/lib/gitlab/database/migration_helpers.rb:128:in `block in create_table'*/","calls":1,"total_time":6.602411,"max_time":6.602411,"mean_time":6.602411,"rows":0},{"query":"SELECT c.relname FROM pg_class c LEFT JOIN pg_namespace n ON n.oid = c.relnamespace WHERE n.nspname = ANY (current_schemas($1)) AND c.relkind IN ($2,$3,$4,$5,$6)","calls":1,"total_time":4.722614,"max_time":4.722614,"mean_time":4.722614,"rows":603},{"query":"INSERT INTO \"schema_migrations\" (\"version\") VALUES ($1) RETURNING \"version\" /*application:test,db_config_name:main,line:/lib/gitlab/database.rb:332:in `block in transaction'*/","calls":1,"total_time":3.102035,"max_time":3.102035,"mean_time":3.102035,"rows":1},{"query":"SELECT \"schema_migrations\".\"version\" FROM \"schema_migrations\" ORDER BY \"schema_migrations\".\"version\" ASC /*application:test,db_config_name:main,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","calls":1,"total_time":2.6275999999999997,"max_time":2.6275999999999997,"mean_time":2.6275999999999997,"rows":5385},{"query":"SELECT \"ar_internal_metadata\".* FROM \"ar_internal_metadata\" WHERE \"ar_internal_metadata\".\"key\" = $1 LIMIT $2 /*application:test,db_config_name:main,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","calls":1,"total_time":1.560201,"max_time":1.560201,"mean_time":1.560201,"rows":1},{"query":"SELECT a.attname, format_type(a.atttypid, a.atttypmod),\n pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod,\n c.collname, col_description(a.attrelid, a.attnum) AS comment\n FROM pg_attribute a\n LEFT JOIN pg_attrdef d ON a.attrelid = d.adrelid AND a.attnum = d.adnum\n LEFT JOIN pg_type t ON a.atttypid = t.oid\n LEFT JOIN pg_collation c ON a.attcollation = c.oid AND a.attcollation \u003c\u003e t.typcollation\n WHERE a.attrelid = $1::regclass\n AND a.attnum \u003e $2 AND NOT a.attisdropped\n ORDER BY a.attnum","calls":1,"total_time":0.623014,"max_time":0.623014,"mean_time":0.623014,"rows":4},{"query":"select pg_stat_statements_reset() /*application:test,db_config_name:main,line:/lib/gitlab/database/migrations/observers/query_statistics.rb:16:in `before'*/","calls":1,"total_time":0.217699,"max_time":0.217699,"mean_time":0.217699,"rows":1},{"query":"SELECT c.relname FROM pg_class c LEFT JOIN pg_namespace n ON n.oid = c.relnamespace WHERE n.nspname = ANY (current_schemas($1)) AND c.relname = $2 AND c.relkind IN ($3,$4)","calls":3,"total_time":0.182048,"max_time":0.06928899999999999,"mean_time":0.06068266666666666,"rows":3},{"query":"SELECT t.oid, t.typname\nFROM pg_type as t\nWHERE t.typname IN ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10)\n /*application:test,db_config_name:unknown,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","calls":1,"total_time":0.10199000000000001,"max_time":0.10199000000000001,"mean_time":0.10199000000000001,"rows":10},{"query":"SET LOCAL lock_timeout TO '100ms' /*application:test,db_config_name:main,line:/lib/gitlab/database/with_lock_retries.rb:172:in `execute'*/","calls":1,"total_time":0.041161,"max_time":0.041161,"mean_time":0.041161,"rows":0},{"query":"SET SESSION timezone TO 'UTC' /*application:test,db_config_name:unknown,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","calls":1,"total_time":0.04011,"max_time":0.04011,"mean_time":0.04011,"rows":0},{"query":"UPDATE \"ar_internal_metadata\" SET \"value\" = $1, \"updated_at\" = $2 WHERE \"ar_internal_metadata\".\"key\" = $3 /*application:test,db_config_name:main,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","calls":1,"total_time":0.039198,"max_time":0.039198,"mean_time":0.039198,"rows":1},{"query":"SET standard_conforming_strings = on /*application:test,db_config_name:unknown,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","calls":1,"total_time":0.029721,"max_time":0.029721,"mean_time":0.029721,"rows":0},{"query":"set client_encoding to 'unicode'","calls":1,"total_time":0.028651,"max_time":0.028651,"mean_time":0.028651,"rows":0},{"query":"SELECT $1 FROM pg_proc WHERE proname = $2 /*application:test,db_config_name:main,line:/lib/gitlab/database/schema_helpers.rb:20:in `function_exists?'*/","calls":1,"total_time":0.027299999999999998,"max_time":0.027299999999999998,"mean_time":0.027299999999999998,"rows":1},{"query":"set client_encoding to 'unicode'","calls":1,"total_time":0.028651,"max_time":0.028651,"mean_time":0.028651,"rows":0},{"query":"SELECT \"feature_gates\".* FROM \"feature_gates\" WHERE \"feature_gates\".\"feature_key\" = $1 /*application:test,db_config_name:main,line:/lib/feature.rb:249:in `block in current_feature_value'*/","calls":1,"total_time":0.018507,"max_time":0.018507,"mean_time":0.018507,"rows":0},{"query":"SET SESSION statement_timeout TO '120s' /*application:test,db_config_name:unknown,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","calls":1,"total_time":0.027209,"max_time":0.027209,"mean_time":0.027209,"rows":0},{"query":"SET intervalstyle = iso_8601 /*application:test,db_config_name:unknown,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","calls":1,"total_time":0.025874,"max_time":0.025874,"mean_time":0.025874,"rows":0},{"query":"set client_encoding to 'UTF8'","calls":1,"total_time":0.022612,"max_time":0.022612,"mean_time":0.022612,"rows":0},{"query":"SELECT pg_try_advisory_lock($1)","calls":1,"total_time":0.013618,"max_time":0.013618,"mean_time":0.013618,"rows":1},{"query":"SET client_min_messages TO 'warning' /*application:test,db_config_name:unknown,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","calls":1,"total_time":0.011879,"max_time":0.011879,"mean_time":0.011879,"rows":0},{"query":"SELECT pg_advisory_unlock($1)","calls":1,"total_time":0.010336999999999999,"max_time":0.010336999999999999,"mean_time":0.010336999999999999,"rows":1},{"query":"RESET idle_in_transaction_session_timeout","calls":1,"total_time":0.008307,"max_time":0.008307,"mean_time":0.008307,"rows":0},{"query":"SELECT current_database()","calls":1,"total_time":0.007934,"max_time":0.007934,"mean_time":0.007934,"rows":1},{"query":"SELECT $1::regtype::oid","calls":1,"total_time":0.006556,"max_time":0.006556,"mean_time":0.006556,"rows":1},{"query":"SHOW TIME ZONE /*application:test,db_config_name:unknown,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","calls":1,"total_time":0.0064,"max_time":0.0064,"mean_time":0.0064,"rows":0},{"query":"SAVEPOINT active_record_1 /*application:test,db_config_name:main,line:/lib/gitlab/database/with_lock_retries.rb:172:in `execute'*/","calls":1,"total_time":0.003657,"max_time":0.003657,"mean_time":0.003657,"rows":0},{"query":"RESET lock_timeout /*application:test,db_config_name:main,line:/lib/gitlab/database/with_lock_retries.rb:172:in `execute'*/","calls":1,"total_time":0.003546,"max_time":0.003546,"mean_time":0.003546,"rows":0},{"query":"COMMIT /*application:test,db_config_name:main,line:/lib/gitlab/database.rb:365:in `commit'*/","calls":2,"total_time":0.003086,"max_time":0.001613,"mean_time":0.001543,"rows":0},{"query":"RELEASE SAVEPOINT active_record_1 /*application:test,db_config_name:main,line:/lib/gitlab/database/with_lock_retries.rb:129:in `run_block_with_lock_timeout'*/","calls":1,"total_time":0.002484,"max_time":0.002484,"mean_time":0.002484,"rows":0},{"query":"BEGIN /*application:test,db_config_name:main,line:/lib/gitlab/database/with_lock_retries.rb:172:in `execute'*/","calls":1,"total_time":0.001829,"max_time":0.001829,"mean_time":0.001829,"rows":0},{"query":"BEGIN /*application:test,db_config_name:main,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","calls":1,"total_time":0.00138,"max_time":0.00138,"mean_time":0.00138,"rows":0}]} diff --git a/notifier/spec/fixtures/migration-testing/v4/main/up/CreateTestTable/migration.log b/notifier/spec/fixtures/migration-testing/v4/main/up/CreateTestTable/migration.log index 8fd7bc7a..d3d93e5a 100644 --- a/notifier/spec/fixtures/migration-testing/v4/main/up/CreateTestTable/migration.log +++ b/notifier/spec/fixtures/migration-testing/v4/main/up/CreateTestTable/migration.log @@ -10,13 +10,13 @@ D, [2022-09-30T21:33:27.585394 #388] DEBUG -- : TRANSACTION (40.4ms) D, [2022-09-30T21:33:27.587203 #388] DEBUG -- : ↳ lib/gitlab/database/with_lock_retries.rb:172:in `execute' D, [2022-09-30T21:33:27.630673 #388] DEBUG -- :  (40.9ms) SET LOCAL lock_timeout TO '100ms' /*application:test,db_config_name:main,line:/lib/gitlab/database/with_lock_retries.rb:172:in `execute'*/ D, [2022-09-30T21:33:27.632070 #388] DEBUG -- : ↳ lib/gitlab/database/with_lock_retries.rb:172:in `execute' -D, [2022-09-30T21:33:27.912726 #388] DEBUG -- :  (233.3ms) CREATE TABLE "test_tables" ("id" bigserial primary key, "stars" bigint DEFAULT 0 NOT NULL, "created_at" timestamp(6) NOT NULL, "updated_at" timestamp(6) NOT NULL, "title" text, "notes" text) /*application:test,db_config_name:main,line:/lib/gitlab/database/migration_helpers.rb:100:in `block in create_table_with_constraints'*/ -D, [2022-09-30T21:33:27.913438 #388] DEBUG -- : ↳ lib/gitlab/database/migration_helpers.rb:100:in `block in create_table_with_constraints' +D, [2022-09-30T21:33:27.912726 #388] DEBUG -- :  (233.3ms) CREATE TABLE "test_tables" ("id" bigserial primary key, "stars" bigint DEFAULT 0 NOT NULL, "created_at" timestamp(6) NOT NULL, "updated_at" timestamp(6) NOT NULL, "title" text, "notes" text) /*application:test,db_config_name:main,line:/lib/gitlab/database/migration_helpers.rb:100:in `block in create_table'*/ +D, [2022-09-30T21:33:27.913438 #388] DEBUG -- : ↳ lib/gitlab/database/migration_helpers.rb:100:in `block in create_table' D, [2022-09-30T21:33:27.962820 #388] DEBUG -- :  (47.1ms) ALTER TABLE "test_tables" ADD CONSTRAINT "check_0770ba173a" CHECK (char_length("title") <= 128), ADD CONSTRAINT "check_9cfc473dbc" CHECK (char_length("notes") <= 1024) - /*application:test,db_config_name:main,line:/lib/gitlab/database/migration_helpers.rb:128:in `block in create_table_with_constraints'*/ -D, [2022-09-30T21:33:27.963466 #388] DEBUG -- : ↳ lib/gitlab/database/migration_helpers.rb:128:in `block in create_table_with_constraints' + /*application:test,db_config_name:main,line:/lib/gitlab/database/migration_helpers.rb:128:in `block in create_table'*/ +D, [2022-09-30T21:33:27.963466 #388] DEBUG -- : ↳ lib/gitlab/database/migration_helpers.rb:128:in `block in create_table' D, [2022-09-30T21:33:28.006343 #388] DEBUG -- : TRANSACTION (40.5ms) RELEASE SAVEPOINT active_record_1 /*application:test,db_config_name:main,line:/lib/gitlab/database/with_lock_retries.rb:129:in `run_block_with_lock_timeout'*/ D, [2022-09-30T21:33:28.008327 #388] DEBUG -- : ↳ lib/gitlab/database/with_lock_retries.rb:129:in `run_block_with_lock_timeout' D, [2022-09-30T21:33:28.049723 #388] DEBUG -- :  (40.4ms) RESET idle_in_transaction_session_timeout; RESET lock_timeout /*application:test,db_config_name:main,line:/lib/gitlab/database/with_lock_retries.rb:172:in `execute'*/ diff --git a/notifier/spec/fixtures/migration-testing/v4/main/up/CreateTestTable/query-details.json b/notifier/spec/fixtures/migration-testing/v4/main/up/CreateTestTable/query-details.json index fd1190b8..da5da192 100644 --- a/notifier/spec/fixtures/migration-testing/v4/main/up/CreateTestTable/query-details.json +++ b/notifier/spec/fixtures/migration-testing/v4/main/up/CreateTestTable/query-details.json @@ -1 +1 @@ -[{"start_time":"2022-09-30T21:33:26.569798+00:00","end_time":"2022-09-30T21:33:26.611015+00:00","sql":"SELECT c.relname FROM pg_class c LEFT JOIN pg_namespace n ON n.oid = c.relnamespace WHERE n.nspname = ANY (current_schemas(false)) AND c.relname = 'schema_migrations' AND c.relkind IN ('r','p')","binds":[]},{"start_time":"2022-09-30T21:33:26.614202+00:00","end_time":"2022-09-30T21:33:26.655326+00:00","sql":"SELECT c.relname FROM pg_class c LEFT JOIN pg_namespace n ON n.oid = c.relnamespace WHERE n.nspname = ANY (current_schemas(false)) AND c.relname = 'ar_internal_metadata' AND c.relkind IN ('r','p')","binds":[]},{"start_time":"2022-09-30T21:33:26.655671+00:00","end_time":"2022-09-30T21:33:26.696212+00:00","sql":"SELECT current_database()","binds":[]},{"start_time":"2022-09-30T21:33:26.940851+00:00","end_time":"2022-09-30T21:33:26.981337+00:00","sql":"SET client_min_messages TO 'warning' /*application:test,db_config_name:unknown,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","binds":[]},{"start_time":"2022-09-30T21:33:26.981925+00:00","end_time":"2022-09-30T21:33:27.022367+00:00","sql":"SET standard_conforming_strings = on /*application:test,db_config_name:unknown,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","binds":[]},{"start_time":"2022-09-30T21:33:27.023505+00:00","end_time":"2022-09-30T21:33:27.064007+00:00","sql":"SET intervalstyle = iso_8601 /*application:test,db_config_name:unknown,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","binds":[]},{"start_time":"2022-09-30T21:33:27.064600+00:00","end_time":"2022-09-30T21:33:27.105137+00:00","sql":"SET SESSION statement_timeout TO '120s' /*application:test,db_config_name:unknown,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","binds":[]},{"start_time":"2022-09-30T21:33:27.105712+00:00","end_time":"2022-09-30T21:33:27.146251+00:00","sql":"SET SESSION timezone TO 'UTC' /*application:test,db_config_name:unknown,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","binds":[]},{"start_time":"2022-09-30T21:33:27.147048+00:00","end_time":"2022-09-30T21:33:27.189245+00:00","sql":"SELECT t.oid, t.typname\nFROM pg_type as t\nWHERE t.typname IN ('int2', 'int4', 'int8', 'oid', 'float4', 'float8', 'numeric', 'bool', 'timestamp', 'timestamptz')\n /*application:test,db_config_name:unknown,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","binds":[]},{"start_time":"2022-09-30T21:33:27.190643+00:00","end_time":"2022-09-30T21:33:27.231095+00:00","sql":"SHOW TIME ZONE /*application:test,db_config_name:unknown,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","binds":[]},{"start_time":"2022-09-30T21:33:27.271501+00:00","end_time":"2022-09-30T21:33:27.315087+00:00","sql":"SELECT pg_try_advisory_lock(3005434223539248480)","binds":[]},{"start_time":"2022-09-30T21:33:27.316125+00:00","end_time":"2022-09-30T21:33:27.398958+00:00","sql":"SELECT \"schema_migrations\".\"version\" FROM \"schema_migrations\" ORDER BY \"schema_migrations\".\"version\" ASC /*application:test,db_config_name:main,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","binds":[]},{"start_time":"2022-09-30T21:33:27.501188+00:00","end_time":"2022-09-30T21:33:27.544335+00:00","sql":"BEGIN /*application:test,db_config_name:main,line:/lib/gitlab/database/with_lock_retries.rb:172:in `execute'*/","binds":[]},{"start_time":"2022-09-30T21:33:27.544872+00:00","end_time":"2022-09-30T21:33:27.589412+00:00","sql":"SAVEPOINT active_record_1 /*application:test,db_config_name:main,line:/lib/gitlab/database/with_lock_retries.rb:172:in `execute'*/","binds":[]},{"start_time":"2022-09-30T21:33:27.589618+00:00","end_time":"2022-09-30T21:33:27.632266+00:00","sql":"SET LOCAL lock_timeout TO '100ms' /*application:test,db_config_name:main,line:/lib/gitlab/database/with_lock_retries.rb:172:in `execute'*/","binds":[]},{"start_time":"2022-09-30T21:33:27.635269+00:00","end_time":"2022-09-30T21:33:27.677390+00:00","sql":"SELECT 'bigint'::regtype::oid","binds":[]},{"start_time":"2022-09-30T21:33:27.679313+00:00","end_time":"2022-09-30T21:33:27.913601+00:00","sql":"CREATE TABLE \"test_tables\" (\"id\" bigserial primary key, \"stars\" bigint DEFAULT 0 NOT NULL, \"created_at\" timestamp(6) NOT NULL, \"updated_at\" timestamp(6) NOT NULL, \"title\" text, \"notes\" text) /*application:test,db_config_name:main,line:/lib/gitlab/database/migration_helpers.rb:100:in `block in create_table_with_constraints'*/","binds":[]},{"start_time":"2022-09-30T21:33:27.915616+00:00","end_time":"2022-09-30T21:33:27.963618+00:00","sql":"ALTER TABLE \"test_tables\"\nADD CONSTRAINT \"check_0770ba173a\" CHECK (char_length(\"title\") \u003c= 128),\nADD CONSTRAINT \"check_9cfc473dbc\" CHECK (char_length(\"notes\") \u003c= 1024)\n /*application:test,db_config_name:main,line:/lib/gitlab/database/migration_helpers.rb:128:in `block in create_table_with_constraints'*/","binds":[]},{"start_time":"2022-09-30T21:33:27.965730+00:00","end_time":"2022-09-30T21:33:28.008592+00:00","sql":"RELEASE SAVEPOINT active_record_1 /*application:test,db_config_name:main,line:/lib/gitlab/database/with_lock_retries.rb:129:in `run_block_with_lock_timeout'*/","binds":[]},{"start_time":"2022-09-30T21:33:28.009198+00:00","end_time":"2022-09-30T21:33:28.051454+00:00","sql":"RESET idle_in_transaction_session_timeout; RESET lock_timeout /*application:test,db_config_name:main,line:/lib/gitlab/database/with_lock_retries.rb:172:in `execute'*/","binds":[]},{"start_time":"2022-09-30T21:33:28.052111+00:00","end_time":"2022-09-30T21:33:28.136100+00:00","sql":"SELECT c.relname FROM pg_class c LEFT JOIN pg_namespace n ON n.oid = c.relnamespace WHERE n.nspname = ANY (current_schemas(false)) AND c.relkind IN ('r','v','m','p','f')","binds":[]},{"start_time":"2022-09-30T21:33:28.143505+00:00","end_time":"2022-09-30T21:33:28.189449+00:00","sql":"INSERT INTO \"schema_migrations\" (\"version\") VALUES ('20210602144718') RETURNING \"version\" /*application:test,db_config_name:main,line:/lib/gitlab/database.rb:332:in `block in transaction'*/","binds":[]},{"start_time":"2022-09-30T21:33:28.191270+00:00","end_time":"2022-09-30T21:33:28.232681+00:00","sql":"COMMIT /*application:test,db_config_name:main,line:/lib/gitlab/database.rb:365:in `commit'*/","binds":[]},{"start_time":"2022-09-30T21:33:28.234329+00:00","end_time":"2022-09-30T21:33:28.277800+00:00","sql":"SELECT a.attname, format_type(a.atttypid, a.atttypmod),\n pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod,\n c.collname, col_description(a.attrelid, a.attnum) AS comment\n FROM pg_attribute a\n LEFT JOIN pg_attrdef d ON a.attrelid = d.adrelid AND a.attnum = d.adnum\n LEFT JOIN pg_type t ON a.atttypid = t.oid\n LEFT JOIN pg_collation c ON a.attcollation = c.oid AND a.attcollation \u003c\u003e t.typcollation\n WHERE a.attrelid = '\"ar_internal_metadata\"'::regclass\n AND a.attnum \u003e 0 AND NOT a.attisdropped\n ORDER BY a.attnum\n","binds":[]},{"start_time":"2022-09-30T21:33:28.280603+00:00","end_time":"2022-09-30T21:33:28.341310+00:00","sql":"SELECT \"ar_internal_metadata\".* FROM \"ar_internal_metadata\" WHERE \"ar_internal_metadata\".\"key\" = 'environment' LIMIT 1 /*application:test,db_config_name:main,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","binds":[]},{"start_time":"2022-09-30T21:33:28.350649+00:00","end_time":"2022-09-30T21:33:28.394709+00:00","sql":"BEGIN /*application:test,db_config_name:main,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","binds":[]},{"start_time":"2022-09-30T21:33:28.394863+00:00","end_time":"2022-09-30T21:33:28.437933+00:00","sql":"UPDATE \"ar_internal_metadata\" SET \"value\" = 'test', \"updated_at\" = '2022-09-30 21:33:28.347998' WHERE \"ar_internal_metadata\".\"key\" = 'environment' /*application:test,db_config_name:main,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","binds":[]},{"start_time":"2022-09-30T21:33:28.438804+00:00","end_time":"2022-09-30T21:33:28.480709+00:00","sql":"COMMIT /*application:test,db_config_name:main,line:/lib/gitlab/database.rb:365:in `commit'*/","binds":[]},{"start_time":"2022-09-30T21:33:28.481004+00:00","end_time":"2022-09-30T21:33:28.522503+00:00","sql":"SELECT pg_advisory_unlock(3005434223539248480)","binds":[]},{"start_time":"2022-09-30T21:33:28.564323+00:00","end_time":"2022-09-30T21:33:28.749991+00:00","sql":"select pg_database_size(current_database()) /*application:test,db_config_name:main,line:/lib/gitlab/database/migrations/observers/total_database_size_change.rb:25:in `get_total_database_size'*/","binds":[]}] +[{"start_time":"2022-09-30T21:33:26.569798+00:00","end_time":"2022-09-30T21:33:26.611015+00:00","sql":"SELECT c.relname FROM pg_class c LEFT JOIN pg_namespace n ON n.oid = c.relnamespace WHERE n.nspname = ANY (current_schemas(false)) AND c.relname = 'schema_migrations' AND c.relkind IN ('r','p')","binds":[]},{"start_time":"2022-09-30T21:33:26.614202+00:00","end_time":"2022-09-30T21:33:26.655326+00:00","sql":"SELECT c.relname FROM pg_class c LEFT JOIN pg_namespace n ON n.oid = c.relnamespace WHERE n.nspname = ANY (current_schemas(false)) AND c.relname = 'ar_internal_metadata' AND c.relkind IN ('r','p')","binds":[]},{"start_time":"2022-09-30T21:33:26.655671+00:00","end_time":"2022-09-30T21:33:26.696212+00:00","sql":"SELECT current_database()","binds":[]},{"start_time":"2022-09-30T21:33:26.940851+00:00","end_time":"2022-09-30T21:33:26.981337+00:00","sql":"SET client_min_messages TO 'warning' /*application:test,db_config_name:unknown,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","binds":[]},{"start_time":"2022-09-30T21:33:26.981925+00:00","end_time":"2022-09-30T21:33:27.022367+00:00","sql":"SET standard_conforming_strings = on /*application:test,db_config_name:unknown,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","binds":[]},{"start_time":"2022-09-30T21:33:27.023505+00:00","end_time":"2022-09-30T21:33:27.064007+00:00","sql":"SET intervalstyle = iso_8601 /*application:test,db_config_name:unknown,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","binds":[]},{"start_time":"2022-09-30T21:33:27.064600+00:00","end_time":"2022-09-30T21:33:27.105137+00:00","sql":"SET SESSION statement_timeout TO '120s' /*application:test,db_config_name:unknown,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","binds":[]},{"start_time":"2022-09-30T21:33:27.105712+00:00","end_time":"2022-09-30T21:33:27.146251+00:00","sql":"SET SESSION timezone TO 'UTC' /*application:test,db_config_name:unknown,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","binds":[]},{"start_time":"2022-09-30T21:33:27.147048+00:00","end_time":"2022-09-30T21:33:27.189245+00:00","sql":"SELECT t.oid, t.typname\nFROM pg_type as t\nWHERE t.typname IN ('int2', 'int4', 'int8', 'oid', 'float4', 'float8', 'numeric', 'bool', 'timestamp', 'timestamptz')\n /*application:test,db_config_name:unknown,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","binds":[]},{"start_time":"2022-09-30T21:33:27.190643+00:00","end_time":"2022-09-30T21:33:27.231095+00:00","sql":"SHOW TIME ZONE /*application:test,db_config_name:unknown,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","binds":[]},{"start_time":"2022-09-30T21:33:27.271501+00:00","end_time":"2022-09-30T21:33:27.315087+00:00","sql":"SELECT pg_try_advisory_lock(3005434223539248480)","binds":[]},{"start_time":"2022-09-30T21:33:27.316125+00:00","end_time":"2022-09-30T21:33:27.398958+00:00","sql":"SELECT \"schema_migrations\".\"version\" FROM \"schema_migrations\" ORDER BY \"schema_migrations\".\"version\" ASC /*application:test,db_config_name:main,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","binds":[]},{"start_time":"2022-09-30T21:33:27.501188+00:00","end_time":"2022-09-30T21:33:27.544335+00:00","sql":"BEGIN /*application:test,db_config_name:main,line:/lib/gitlab/database/with_lock_retries.rb:172:in `execute'*/","binds":[]},{"start_time":"2022-09-30T21:33:27.544872+00:00","end_time":"2022-09-30T21:33:27.589412+00:00","sql":"SAVEPOINT active_record_1 /*application:test,db_config_name:main,line:/lib/gitlab/database/with_lock_retries.rb:172:in `execute'*/","binds":[]},{"start_time":"2022-09-30T21:33:27.589618+00:00","end_time":"2022-09-30T21:33:27.632266+00:00","sql":"SET LOCAL lock_timeout TO '100ms' /*application:test,db_config_name:main,line:/lib/gitlab/database/with_lock_retries.rb:172:in `execute'*/","binds":[]},{"start_time":"2022-09-30T21:33:27.635269+00:00","end_time":"2022-09-30T21:33:27.677390+00:00","sql":"SELECT 'bigint'::regtype::oid","binds":[]},{"start_time":"2022-09-30T21:33:27.679313+00:00","end_time":"2022-09-30T21:33:27.913601+00:00","sql":"CREATE TABLE \"test_tables\" (\"id\" bigserial primary key, \"stars\" bigint DEFAULT 0 NOT NULL, \"created_at\" timestamp(6) NOT NULL, \"updated_at\" timestamp(6) NOT NULL, \"title\" text, \"notes\" text) /*application:test,db_config_name:main,line:/lib/gitlab/database/migration_helpers.rb:100:in `block in create_table'*/","binds":[]},{"start_time":"2022-09-30T21:33:27.915616+00:00","end_time":"2022-09-30T21:33:27.963618+00:00","sql":"ALTER TABLE \"test_tables\"\nADD CONSTRAINT \"check_0770ba173a\" CHECK (char_length(\"title\") \u003c= 128),\nADD CONSTRAINT \"check_9cfc473dbc\" CHECK (char_length(\"notes\") \u003c= 1024)\n /*application:test,db_config_name:main,line:/lib/gitlab/database/migration_helpers.rb:128:in `block in create_table'*/","binds":[]},{"start_time":"2022-09-30T21:33:27.965730+00:00","end_time":"2022-09-30T21:33:28.008592+00:00","sql":"RELEASE SAVEPOINT active_record_1 /*application:test,db_config_name:main,line:/lib/gitlab/database/with_lock_retries.rb:129:in `run_block_with_lock_timeout'*/","binds":[]},{"start_time":"2022-09-30T21:33:28.009198+00:00","end_time":"2022-09-30T21:33:28.051454+00:00","sql":"RESET idle_in_transaction_session_timeout; RESET lock_timeout /*application:test,db_config_name:main,line:/lib/gitlab/database/with_lock_retries.rb:172:in `execute'*/","binds":[]},{"start_time":"2022-09-30T21:33:28.052111+00:00","end_time":"2022-09-30T21:33:28.136100+00:00","sql":"SELECT c.relname FROM pg_class c LEFT JOIN pg_namespace n ON n.oid = c.relnamespace WHERE n.nspname = ANY (current_schemas(false)) AND c.relkind IN ('r','v','m','p','f')","binds":[]},{"start_time":"2022-09-30T21:33:28.143505+00:00","end_time":"2022-09-30T21:33:28.189449+00:00","sql":"INSERT INTO \"schema_migrations\" (\"version\") VALUES ('20210602144718') RETURNING \"version\" /*application:test,db_config_name:main,line:/lib/gitlab/database.rb:332:in `block in transaction'*/","binds":[]},{"start_time":"2022-09-30T21:33:28.191270+00:00","end_time":"2022-09-30T21:33:28.232681+00:00","sql":"COMMIT /*application:test,db_config_name:main,line:/lib/gitlab/database.rb:365:in `commit'*/","binds":[]},{"start_time":"2022-09-30T21:33:28.234329+00:00","end_time":"2022-09-30T21:33:28.277800+00:00","sql":"SELECT a.attname, format_type(a.atttypid, a.atttypmod),\n pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod,\n c.collname, col_description(a.attrelid, a.attnum) AS comment\n FROM pg_attribute a\n LEFT JOIN pg_attrdef d ON a.attrelid = d.adrelid AND a.attnum = d.adnum\n LEFT JOIN pg_type t ON a.atttypid = t.oid\n LEFT JOIN pg_collation c ON a.attcollation = c.oid AND a.attcollation \u003c\u003e t.typcollation\n WHERE a.attrelid = '\"ar_internal_metadata\"'::regclass\n AND a.attnum \u003e 0 AND NOT a.attisdropped\n ORDER BY a.attnum\n","binds":[]},{"start_time":"2022-09-30T21:33:28.280603+00:00","end_time":"2022-09-30T21:33:28.341310+00:00","sql":"SELECT \"ar_internal_metadata\".* FROM \"ar_internal_metadata\" WHERE \"ar_internal_metadata\".\"key\" = 'environment' LIMIT 1 /*application:test,db_config_name:main,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","binds":[]},{"start_time":"2022-09-30T21:33:28.350649+00:00","end_time":"2022-09-30T21:33:28.394709+00:00","sql":"BEGIN /*application:test,db_config_name:main,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","binds":[]},{"start_time":"2022-09-30T21:33:28.394863+00:00","end_time":"2022-09-30T21:33:28.437933+00:00","sql":"UPDATE \"ar_internal_metadata\" SET \"value\" = 'test', \"updated_at\" = '2022-09-30 21:33:28.347998' WHERE \"ar_internal_metadata\".\"key\" = 'environment' /*application:test,db_config_name:main,line:/lib/gitlab/database/migrations/runner.rb:127:in `block (3 levels) in run'*/","binds":[]},{"start_time":"2022-09-30T21:33:28.438804+00:00","end_time":"2022-09-30T21:33:28.480709+00:00","sql":"COMMIT /*application:test,db_config_name:main,line:/lib/gitlab/database.rb:365:in `commit'*/","binds":[]},{"start_time":"2022-09-30T21:33:28.481004+00:00","end_time":"2022-09-30T21:33:28.522503+00:00","sql":"SELECT pg_advisory_unlock(3005434223539248480)","binds":[]},{"start_time":"2022-09-30T21:33:28.564323+00:00","end_time":"2022-09-30T21:33:28.749991+00:00","sql":"select pg_database_size(current_database()) /*application:test,db_config_name:main,line:/lib/gitlab/database/migrations/observers/total_database_size_change.rb:25:in `get_total_database_size'*/","binds":[]}] -- GitLab From ab9b99670975fe4798c18f8a51027e9d06868d4e Mon Sep 17 00:00:00 2001 From: Leonardo da Rosa Date: Thu, 5 Jan 2023 15:27:51 -0300 Subject: [PATCH 08/11] Removes outdated methods It removes t.text_limit. Limits are now included as arguments in the field type --- .../gitlab/patches/testing/005-New-Table-Migration.patch | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/docker/gitlab/patches/testing/005-New-Table-Migration.patch b/docker/gitlab/patches/testing/005-New-Table-Migration.patch index 0e5fa540..90dec5ce 100644 --- a/docker/gitlab/patches/testing/005-New-Table-Migration.patch +++ b/docker/gitlab/patches/testing/005-New-Table-Migration.patch @@ -25,11 +25,8 @@ index 00000000000..71d1890dba8 + create_table :test_tables do |t| + t.bigint :stars, default: 0, null: false + t.timestamps -+ t.text :title -+ t.text :notes -+ -+ t.text_limit :title, 128 -+ t.text_limit :notes, 1024 ++ t.text :title, limit: 128 ++ t.text :notes, limit: 1024 + end + end + -- GitLab From 8d2a086ca55ba6aeaf3a8a500e40c5e36b56cb35 Mon Sep 17 00:00:00 2001 From: Leonardo da Rosa Date: Thu, 5 Jan 2023 16:15:34 -0300 Subject: [PATCH 09/11] Fix invalid structure of 005 patch It fixes invalid length of the changes --- .../testing/005-New-Table-Migration.patch | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/docker/gitlab/patches/testing/005-New-Table-Migration.patch b/docker/gitlab/patches/testing/005-New-Table-Migration.patch index 90dec5ce..c1299f00 100644 --- a/docker/gitlab/patches/testing/005-New-Table-Migration.patch +++ b/docker/gitlab/patches/testing/005-New-Table-Migration.patch @@ -16,11 +16,12 @@ new file mode 100644 index 00000000000..71d1890dba8 --- /dev/null +++ b/db/migrate/20210602144718_create_test_table.rb -@@ -0,0 +1,20 @@ +@@ -0,0 +1,18 @@ +# frozen_string_literal: true + +class CreateTestTable < Gitlab::Database::Migration[2.1] + include Gitlab::Database::MigrationHelpers ++ + def up + create_table :test_tables do |t| + t.bigint :stars, default: 0, null: false @@ -47,9 +48,9 @@ index d8add15b68d..c6524149b4a 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -21720,6 +21720,26 @@ CREATE SEQUENCE timelog_categories_id_seq - + ALTER SEQUENCE timelog_categories_id_seq OWNED BY timelog_categories.id; - + +CREATE TABLE test_tables ( + id bigint NOT NULL, + stars bigint DEFAULT 0 NOT NULL, @@ -74,24 +75,23 @@ index d8add15b68d..c6524149b4a 100644 id integer NOT NULL, time_spent integer NOT NULL, @@ -24052,6 +24072,8 @@ ALTER TABLE ONLY terraform_states ALTER COLUMN id SET DEFAULT nextval('terraform - + ALTER TABLE ONLY timelog_categories ALTER COLUMN id SET DEFAULT nextval('timelog_categories_id_seq'::regclass); - + +ALTER TABLE ONLY test_tables ALTER COLUMN id SET DEFAULT nextval('test_tables_id_seq'::regclass); + ALTER TABLE ONLY timelogs ALTER COLUMN id SET DEFAULT nextval('timelogs_id_seq'::regclass); - + ALTER TABLE ONLY todos ALTER COLUMN id SET DEFAULT nextval('todos_id_seq'::regclass); @@ -26341,6 +26363,9 @@ ALTER TABLE ONLY terraform_states ALTER TABLE ONLY timelog_categories ADD CONSTRAINT timelog_categories_pkey PRIMARY KEY (id); - + +ALTER TABLE ONLY test_tables + ADD CONSTRAINT test_tables_pkey PRIMARY KEY (id); + ALTER TABLE ONLY timelogs ADD CONSTRAINT timelogs_pkey PRIMARY KEY (id); --- +-- 2.31.1 - -- GitLab From cc08f602b64736a829124daa232f470183949c2a Mon Sep 17 00:00:00 2001 From: Leonardo da Rosa Date: Thu, 5 Jan 2023 18:39:43 -0300 Subject: [PATCH 10/11] Fix cases when one or more meta attributes are nil --- notifier/migration_meta.rb | 12 ++++++------ notifier/spec/migration_meta_spec.rb | 20 +++++++++++++++++--- 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/notifier/migration_meta.rb b/notifier/migration_meta.rb index 81cc2bb9..d5fb7827 100644 --- a/notifier/migration_meta.rb +++ b/notifier/migration_meta.rb @@ -1,10 +1,12 @@ # frozen_string_literal: true class MigrationMeta - def initialize(total_tuple_count: 0, max_batch_size: 1, interval: 0) - @total_tuple_count = total_tuple_count.to_i - @max_batch_size = max_batch_size.to_i - @interval = interval.to_i + MIN_VALUE = 1.freeze + + def initialize(total_tuple_count: nil, max_batch_size: nil, interval: nil) + @total_tuple_count = [total_tuple_count.to_i, MIN_VALUE].max + @max_batch_size = [max_batch_size.to_i, MIN_VALUE].max + @interval = [interval.to_i, MIN_VALUE].max end # Estimates the time that migration will take to complete in production. @@ -25,8 +27,6 @@ class MigrationMeta attr_reader :total_tuple_count, :max_batch_size, :interval def total_time_estimation - return 0.seconds if max_batch_size.zero? - @total_time_estimation ||= total_tuple_count / max_batch_size * interval.seconds end end diff --git a/notifier/spec/migration_meta_spec.rb b/notifier/spec/migration_meta_spec.rb index a48d7470..0aa1c2f7 100644 --- a/notifier/spec/migration_meta_spec.rb +++ b/notifier/spec/migration_meta_spec.rb @@ -51,14 +51,28 @@ RSpec.describe MigrationMeta do end end - context 'when initializing with nil args' do - let(:total_tuple_count) { nil } + context 'when initializing with no max_batch_size' do let(:max_batch_size) { nil } - let(:interval) { nil } + + it 'returns 0 days, 0 hours and 0 minutes' do + expect(meta.time_to_complete).to eq([312500, 0, 0]) + end + end + + context 'when initializing with no total_tuple_count' do + let(:total_tuple_count) { nil } it 'returns 0 days, 0 hours and 0 minutes' do expect(meta.time_to_complete).to eq([0, 0, 0]) end end + + context 'when initializing with no interval' do + let(:interval) { nil } + + it 'returns 1 day, 17 hours and 40 minutes' do + expect(meta.time_to_complete).to eq([1, 17, 40]) + end + end end end -- GitLab From 242b82a06d01b5845a57bd1f178f30bef0a01d02 Mon Sep 17 00:00:00 2001 From: Leonardo da Rosa Date: Thu, 5 Jan 2023 19:09:03 -0300 Subject: [PATCH 11/11] Remove redundant freeze --- notifier/migration_meta.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/notifier/migration_meta.rb b/notifier/migration_meta.rb index d5fb7827..b6c05bdc 100644 --- a/notifier/migration_meta.rb +++ b/notifier/migration_meta.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true class MigrationMeta - MIN_VALUE = 1.freeze + MIN_VALUE = 1 def initialize(total_tuple_count: nil, max_batch_size: nil, interval: nil) @total_tuple_count = [total_tuple_count.to_i, MIN_VALUE].max -- GitLab