Merge branch 'optimistic-locking-ci-status-change' into 'master'

Make CI build to use optimistic locking only on status change

Closes #29679

See merge request !10152
This commit is contained in:
Rémy Coutable 2017-03-29 11:36:26 +00:00
commit b0e18eaf87
3 changed files with 44 additions and 0 deletions

View File

@ -105,6 +105,10 @@ class CommitStatus < ActiveRecord::Base
end
end
def locking_enabled?
status_changed?
end
def before_sha
pipeline.before_sha || Gitlab::Git::BLANK_SHA
end

View File

@ -0,0 +1,4 @@
---
title: Make CI build to use optimistic locking only on status change
merge_request:
author:

View File

@ -297,4 +297,40 @@ describe CommitStatus, :models do
end
end
end
describe '#locking_enabled?' do
before do
commit_status.lock_version = 100
end
subject { commit_status.locking_enabled? }
context "when changing status" do
before do
commit_status.status = "running"
end
it "lock" do
is_expected.to be true
end
it "raise exception when trying to update" do
expect{ commit_status.save }.to raise_error(ActiveRecord::StaleObjectError)
end
end
context "when changing description" do
before do
commit_status.description = "test"
end
it "do not lock" do
is_expected.to be false
end
it "save correctly" do
expect(commit_status.save).to be true
end
end
end
end