diff options
author | Kamil Trzcinski <ayufan@ayufan.eu> | 2016-10-21 15:12:11 +0200 |
---|---|---|
committer | Kamil Trzcinski <ayufan@ayufan.eu> | 2016-10-26 11:37:23 +0200 |
commit | 47b2add4f62d64d1a46109910c86805728e548c4 (patch) | |
tree | 58bee6cd9dbd1f4b7be7761578b9a18486998b36 /lib | |
parent | 5d7ee7a1b6c818dd0ccba6a393875072dabd7eba (diff) | |
download | gitlab-ce-47b2add4f62d64d1a46109910c86805728e548c4.tar.gz |
Add tests for optimistic locking
Diffstat (limited to 'lib')
-rw-r--r-- | lib/gitlab/optimistic_locking.rb | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/lib/gitlab/optimistic_locking.rb b/lib/gitlab/optimistic_locking.rb index 7668c518bc5..17010d73c57 100644 --- a/lib/gitlab/optimistic_locking.rb +++ b/lib/gitlab/optimistic_locking.rb @@ -1,10 +1,12 @@ module Gitlab - module OptimisticLocking - def retry_lock(subject, &block) - while true do + class OptimisticLocking + def self.retry_lock(subject, &block) + loop do begin - return yield subject - rescue StaleObjectError + subject.transaction do + return block.call(subject) + end + rescue ActiveRecord::StaleObjectError subject.reload end end |