diff options
author | Valery Sizov <vsv2711@gmail.com> | 2015-04-24 18:27:26 +0300 |
---|---|---|
committer | Valery Sizov <vsv2711@gmail.com> | 2015-04-24 18:32:13 +0300 |
commit | 96ddc548f549ff7101588a0fbf923f9e523f9dfe (patch) | |
tree | d7577bb7f5d2f08902482458562a390bdabb2a08 | |
parent | 0783a65989b2a99122fc78b578e583e775975399 (diff) | |
download | gitlab-ci-96ddc548f549ff7101588a0fbf923f9e523f9dfe.tar.gz |
resolve situation with concurent ruuners registration
-rw-r--r-- | app/services/register_build_service.rb | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/app/services/register_build_service.rb b/app/services/register_build_service.rb index cbb9b5f..e0f1659 100644 --- a/app/services/register_build_service.rb +++ b/app/services/register_build_service.rb @@ -25,7 +25,9 @@ class RegisterBuildService end if build - ActiveRecord::Base.transaction do + # In case when 2 runners try to assign the same build, second runner will be declined + # with StateMachine::InvalidTransition in run! method. + build.with_lock do build.runner_id = current_runner.id build.save! build.run! @@ -33,5 +35,8 @@ class RegisterBuildService end build + + rescue StateMachine::InvalidTransition + nil end end |