diff options
author | Andreas Brandl <abrandl@gitlab.com> | 2019-06-27 12:36:00 +0000 |
---|---|---|
committer | Andreas Brandl <abrandl@gitlab.com> | 2019-06-27 12:36:00 +0000 |
commit | 5c4d0dc69be52c7cb2a24ee7fe13c96c621994ea (patch) | |
tree | 4c56437e1671025a52fd9d0e09a0cbc4dca75004 | |
parent | 47089be063b754b3cc76c47bda7d26876889e5de (diff) | |
parent | d092ed178fe490769f60df2e1ce8a667b812fc79 (diff) | |
download | gitlab-ce-5c4d0dc69be52c7cb2a24ee7fe13c96c621994ea.tar.gz |
Merge branch 'sh-handle-nil-replication-lag' into 'master'
Fix background migrations failing with unused replication slot
Closes #63666
See merge request gitlab-org/gitlab-ce!30042
-rw-r--r-- | app/models/postgresql/replication_slot.rb | 2 | ||||
-rw-r--r-- | changelogs/unreleased/sh-handle-nil-replication-lag.yml | 5 | ||||
-rw-r--r-- | spec/models/postgresql/replication_slot_spec.rb | 8 |
3 files changed, 14 insertions, 1 deletions
diff --git a/app/models/postgresql/replication_slot.rb b/app/models/postgresql/replication_slot.rb index 74ccf23cf69..7a123deb719 100644 --- a/app/models/postgresql/replication_slot.rb +++ b/app/models/postgresql/replication_slot.rb @@ -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 diff --git a/changelogs/unreleased/sh-handle-nil-replication-lag.yml b/changelogs/unreleased/sh-handle-nil-replication-lag.yml new file mode 100644 index 00000000000..5638d7e79e3 --- /dev/null +++ b/changelogs/unreleased/sh-handle-nil-replication-lag.yml @@ -0,0 +1,5 @@ +--- +title: Fix background migrations failing with unused replication slot +merge_request: 30042 +author: +type: fixed diff --git a/spec/models/postgresql/replication_slot_spec.rb b/spec/models/postgresql/replication_slot_spec.rb index e100af7ddc7..95ae204a8a8 100644 --- a/spec/models/postgresql/replication_slot_spec.rb +++ b/spec/models/postgresql/replication_slot_spec.rb @@ -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 |