diff --git a/docker/gitlab/patches/testing/005-New-Table-Migration.patch b/docker/gitlab/patches/testing/005-New-Table-Migration.patch index c608f3c80df02fd907a88635de57f72e1baacfe4..c1299f00ea4faec7c801ffe02609e90e7f4483df 100644 --- a/docker/gitlab/patches/testing/005-New-Table-Migration.patch +++ b/docker/gitlab/patches/testing/005-New-Table-Migration.patch @@ -16,20 +16,18 @@ 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_with_constraints :test_tables do |t| ++ 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 + @@ -97,4 +95,3 @@ index d8add15b68d..c6524149b4a 100644 -- 2.31.1 - diff --git a/notifier/background_migration.rb b/notifier/background_migration.rb index 4ae89a366b55bcd26c1bd915cafcf8227b6942f4..ffcaa56861128b68ca52da879b71265dd6de6c03 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 79d294e27b097e10cd509ed380baadde548ca561..eabd8037129b31447bbc08c4b2926aab1c209e1d 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 c4510aab9ea8997d32db3aeb88e4616d21a9a101..3c11bff27036ffd8ed0d98d895a071b9518675d0 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,12 @@ class Migration !success? || exceeds_time_guidance? || has_queries_with_warnings? end + def 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) unless stats @was_run = false @@ -194,6 +202,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 0000000000000000000000000000000000000000..b6c05bdc5c24552ca1105a57d67ed7d154e78dc6 --- /dev/null +++ b/notifier/migration_meta.rb @@ -0,0 +1,32 @@ +# frozen_string_literal: true + +class MigrationMeta + 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 + @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. + # + # @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/ci/up/CreateTestTable/migration-stats.json b/notifier/spec/fixtures/migration-testing/v4/ci/up/CreateTestTable/migration-stats.json index 20c72adfc3d0bdaca25eae700deab5a50c9955df..861768cba3b4a76e910e27a8f9c75d28a7d45af9 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 6df6c21228e763a2b1f3e6315262bb4e97886548..1d03b48d4b18f5a174b5afddabfd89771d2b4af9 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 04924a66619fe85b9db371d9de900721c94748a9..1ef38a29887e9ef7d4e096b51f7ee9d4cb77d678 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 96dc740d9a5d08d8e75915f627b47abed3f07864..b60ee581003e7c0ac6cb8ec5c4f9e9c089d56d24 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
| @@ -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,46 @@ Migrations included in this change have been executed on gitlab.com data for tes ### Background migrations +#### Background Migration: TestBackgroundMigration + +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'*/
| + +
+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 | + +
+ --- @@ -256,35 +296,35 @@ 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) - ### Database migrations (on the ci database) | | 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 | @@ -326,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
| @@ -409,9 +449,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 +476,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 @@ -537,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/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 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 c155bff82a87c89d61e197faaa38fa9e60ffbd77..8e1ee27ebd9d3ea1023fc85fd0ae54d077aa0e59 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 8fd7bc7ab2a26143133defe885bb1584d7cd2239..d3d93e5a258ed3f8a33c841811305e67b37ace6e 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 fd1190b8a1e0c47397f9c7c3fec3a5374c7d6e7e..da5da192405f5d0d88c329ccf1478fc6707d9903 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":[]}] diff --git a/notifier/spec/migration_meta_spec.rb b/notifier/spec/migration_meta_spec.rb new file mode 100644 index 0000000000000000000000000000000000000000..0aa1c2f794a5872b6108024ace3ff60b5ca11643 --- /dev/null +++ b/notifier/spec/migration_meta_spec.rb @@ -0,0 +1,78 @@ +# 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 + + 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 no max_batch_size' do + let(:max_batch_size) { 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 diff --git a/notifier/templates/background_migration_detail.erb b/notifier/templates/background_migration_detail.erb index 84748519c8062bd5ecb3b60bc2e4fd9a2f756417..4d3be89422b258b51affd893c63726f4c9f50f96 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