Make CI build to use optimistic locking only on status change

This commit is contained in:
Kamil Trzcinski 2017-03-22 18:22:34 +01:00
parent d70f9c8563
commit bb910c3b46
No known key found for this signature in database
GPG Key ID: 4505F5C7E12C6A5A
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