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

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gitlab/database/background_migration/health_status/indicators/write_ahead_log.rb')
-rw-r--r--lib/gitlab/database/background_migration/health_status/indicators/write_ahead_log.rb74
1 files changed, 0 insertions, 74 deletions
diff --git a/lib/gitlab/database/background_migration/health_status/indicators/write_ahead_log.rb b/lib/gitlab/database/background_migration/health_status/indicators/write_ahead_log.rb
deleted file mode 100644
index d2fb0a8b751..00000000000
--- a/lib/gitlab/database/background_migration/health_status/indicators/write_ahead_log.rb
+++ /dev/null
@@ -1,74 +0,0 @@
-# frozen_string_literal: true
-
-module Gitlab
- module Database
- module BackgroundMigration
- module HealthStatus
- module Indicators
- class WriteAheadLog
- include Gitlab::Utils::StrongMemoize
-
- LIMIT = 42
- PENDING_WAL_COUNT_SQL = <<~SQL
- WITH
- current_wal_file AS (
- SELECT pg_walfile_name(pg_current_wal_insert_lsn()) AS pg_walfile_name
- ),
- current_wal AS (
- SELECT
- ('x' || substring(pg_walfile_name, 9, 8))::bit(32)::int AS log,
- ('x' || substring(pg_walfile_name, 17, 8))::bit(32)::int AS seg,
- pg_walfile_name
- FROM current_wal_file
- ),
- archive_wal AS (
- SELECT
- ('x' || substring(last_archived_wal, 9, 8))::bit(32)::int AS log,
- ('x' || substring(last_archived_wal, 17, 8))::bit(32)::int AS seg,
- last_archived_wal
- FROM pg_stat_archiver
- )
- SELECT ((current_wal.log - archive_wal.log) * 256) + (current_wal.seg - archive_wal.seg) AS pending_wal_count
- FROM current_wal, archive_wal
- SQL
-
- def initialize(context)
- @connection = context.connection
- end
-
- def evaluate
- return Signals::NotAvailable.new(self.class, reason: 'indicator disabled') unless enabled?
-
- unless pending_wal_count
- return Signals::NotAvailable.new(self.class, reason: 'WAL archive queue can not be calculated')
- end
-
- if pending_wal_count > LIMIT
- Signals::Stop.new(self.class, reason: "WAL archive queue is too big")
- else
- Signals::Normal.new(self.class, reason: 'WAL archive queue is within limit')
- end
- end
-
- private
-
- attr_reader :connection
-
- def enabled?
- Feature.enabled?(:batched_migrations_health_status_wal, type: :ops)
- end
-
- # Returns number of WAL segments pending archival
- def pending_wal_count
- strong_memoize(:pending_wal_count) do
- Gitlab::Database::LoadBalancing::Session.current.use_primary do
- connection.execute(PENDING_WAL_COUNT_SQL).to_a.first&.fetch('pending_wal_count')
- end
- end
- end
- end
- end
- end
- end
- end
-end