From 47b2add4f62d64d1a46109910c86805728e548c4 Mon Sep 17 00:00:00 2001 From: Kamil Trzcinski Date: Fri, 21 Oct 2016 15:12:11 +0200 Subject: Add tests for optimistic locking --- lib/gitlab/optimistic_locking.rb | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'lib/gitlab/optimistic_locking.rb') 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 -- cgit v1.2.3