Commit 109d8095 authored by Jan Provaznik's avatar Jan Provaznik

Merge branch '11925-geo-sidekiq-nodes-try-to-run-jobs-even-thought-db-is-readonly' into 'master'

Ensure DB is writable before continuing job

Closes #11925

See merge request gitlab-org/gitlab-ee!13943
parents c53eda91 4c431e85
......@@ -5,6 +5,8 @@ class PagesDomainVerificationCronWorker
include CronjobQueue
def perform
return if Gitlab::Database.read_only?
PagesDomain.needs_verification.find_each do |domain|
PagesDomainVerificationWorker.perform_async(domain.id)
end
......
......@@ -5,6 +5,8 @@ class PagesDomainVerificationWorker
# rubocop: disable CodeReuse/ActiveRecord
def perform(domain_id)
return if Gitlab::Database.read_only?
domain = PagesDomain.find_by(id: domain_id)
return unless domain
......
......@@ -10,6 +10,8 @@ class ProjectImportScheduleWorker
# rubocop: disable CodeReuse/ActiveRecord
def perform(project_id)
return if Gitlab::Database.read_only?
import_state = ProjectImportState.find_by(project_id: project_id)
raise ImportStateNotFound unless import_state
......
......@@ -10,6 +10,8 @@ class UpdateAllMirrorsWorker
RESCHEDULE_WAIT = 10.seconds
def perform
return if Gitlab::Database.read_only?
scheduling_ran = with_lease do
schedule_mirrors!
end
......
......@@ -2,6 +2,15 @@ require 'spec_helper'
describe ProjectImportScheduleWorker do
describe '#perform' do
it 'does nothing if the database is read-only' do
project = create(:project)
allow(Gitlab::Database).to receive(:read_only?).and_return(true)
expect(ProjectImportState).not_to receive(:project_id).with(project_id: project.id)
subject.perform(project.id)
end
it 'schedules an import for a project' do
import_state = create(:import_state)
......
......@@ -10,6 +10,13 @@ describe UpdateAllMirrorsWorker do
end
describe '#perform' do
it 'does nothing if the database is read-only' do
allow(Gitlab::Database).to receive(:read_only?).and_return(true)
expect(worker).not_to receive(:schedule_mirrors!)
worker.perform
end
it 'does not execute if cannot get the lease' do
stub_exclusive_lease_taken
......
......@@ -10,6 +10,13 @@ describe PagesDomainVerificationCronWorker do
let!(:reverify) { create(:pages_domain, :reverify) }
let!(:disabled) { create(:pages_domain, :disabled) }
it 'does nothing if the database is read-only' do
allow(Gitlab::Database).to receive(:read_only?).and_return(true)
expect(PagesDomainVerificationWorker).not_to receive(:perform_async).with(reverify.id)
worker.perform
end
it 'enqueues a PagesDomainVerificationWorker for domains needing verification' do
[reverify, disabled].each do |domain|
expect(PagesDomainVerificationWorker).to receive(:perform_async).with(domain.id)
......
......@@ -8,6 +8,13 @@ describe PagesDomainVerificationWorker do
let(:domain) { create(:pages_domain) }
describe '#perform' do
it 'does nothing if the database is read-only' do
allow(Gitlab::Database).to receive(:read_only?).and_return(true)
expect(PagesDomain).not_to receive(:find_by).with(id: domain.id)
worker.perform(domain.id)
end
it 'does nothing for a non-existent domain' do
domain.destroy
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment