提交 cb770872 编写于 作者: G Grzegorz Bizon

Merge branch 'optimise-runner-update-cached-info' into 'master'

Optimise runner update cached info

See merge request gitlab-org/gitlab-ce!19187
......@@ -219,10 +219,8 @@ module Ci
cache_attributes(values)
if persist_cached_data?
self.assign_attributes(values)
self.save if self.changed?
end
# We save data without validation, it will always change due to `contacted_at`
self.update_columns(values) if persist_cached_data?
end
def pick_build!(build)
......
---
title: Update runner cached informations without performing validations
merge_request:
author:
type: performance
......@@ -549,7 +549,7 @@ describe Ci::Runner do
end
describe '#update_cached_info' do
let(:runner) { create(:ci_runner) }
let(:runner) { create(:ci_runner, :project) }
subject { runner.update_cached_info(architecture: '18-bit') }
......@@ -570,17 +570,22 @@ describe Ci::Runner do
runner.contacted_at = 2.hours.ago
end
it 'updates database' do
expect_redis_update
context 'with invalid runner' do
before do
runner.projects = []
end
it 'still updates redis cache and database' do
expect(runner).to be_invalid
expect { subject }.to change { runner.reload.read_attribute(:contacted_at) }
.and change { runner.reload.read_attribute(:architecture) }
expect_redis_update
does_db_update
end
end
it 'updates cache' do
it 'updates redis cache and database' do
expect_redis_update
subject
does_db_update
end
end
......@@ -590,6 +595,11 @@ describe Ci::Runner do
expect(redis).to receive(:set).with(redis_key, anything, any_args)
end
end
def does_db_update
expect { subject }.to change { runner.reload.read_attribute(:contacted_at) }
.and change { runner.reload.read_attribute(:architecture) }
end
end
describe '#destroy' do
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册