Fix background migrations failing with unused replication slot
When there is an unused replication slot, the replication lag function will return a nil value, resulting in "NoMethodError: undefined method `>=' for nil:NilClass" error. We now just ignore these nil values. Closes https://gitlab.com/gitlab-org/gitlab-ce/issues/63666
This commit is contained in:
parent
30131a3aca
commit
d092ed178f
3 changed files with 14 additions and 1 deletions
|
@ -28,7 +28,7 @@ module Postgresql
|
|||
# We force the use of a transaction here so the query always goes to the
|
||||
# primary, even when using the EE DB load balancer.
|
||||
sizes = transaction { pluck(lag_function) }
|
||||
too_great = sizes.count { |size| size >= max }
|
||||
too_great = sizes.compact.count { |size| size >= max }
|
||||
|
||||
# If too many replicas are falling behind too much, the availability of a
|
||||
# GitLab instance might suffer. To prevent this from happening we require
|
||||
|
|
5
changelogs/unreleased/sh-handle-nil-replication-lag.yml
Normal file
5
changelogs/unreleased/sh-handle-nil-replication-lag.yml
Normal file
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Fix background migrations failing with unused replication slot
|
||||
merge_request: 30042
|
||||
author:
|
||||
type: fixed
|
|
@ -47,5 +47,13 @@ describe Postgresql::ReplicationSlot, :postgresql do
|
|||
|
||||
expect(described_class.lag_too_great?).to eq(false)
|
||||
end
|
||||
|
||||
it 'returns false when there is a nil replication lag' do
|
||||
expect(described_class)
|
||||
.to receive(:pluck)
|
||||
.and_return([0.megabytes, nil])
|
||||
|
||||
expect(described_class.lag_too_great?).to eq(false)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue