From 5cb900370ab8baf4ea04a05f8aa38f4d48af7133 Mon Sep 17 00:00:00 2001 From: Jure Grabnar Date: Wed, 25 Sep 2019 11:07:53 +0200 Subject: [PATCH] Change/fix asset locking mechanism Close SCI-3870 --- app/models/asset.rb | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/app/models/asset.rb b/app/models/asset.rb index a03a27882..6fdaac984 100644 --- a/app/models/asset.rb +++ b/app/models/asset.rb @@ -449,19 +449,18 @@ class Asset < ApplicationRecord # locked?, lock_asset and refresh_lock rely on the asset # being locked in the database to prevent race conditions def locked? + unlock_expired !lock.nil? end def lock_asset(lock_string) self.lock = lock_string self.lock_ttl = Time.now.to_i + LOCK_DURATION - delay(queue: :assets, run_at: LOCK_DURATION.seconds.from_now).unlock_expired save! end def refresh_lock self.lock_ttl = Time.now.to_i + LOCK_DURATION - delay(queue: :assets, run_at: LOCK_DURATION.seconds.from_now).unlock_expired save! end @@ -473,7 +472,7 @@ class Asset < ApplicationRecord def unlock_expired with_lock do - if !lock_ttl.nil? && lock_ttl >= Time.now.to_i + if !lock_ttl.nil? && lock_ttl <= Time.now.to_i self.lock = nil self.lock_ttl = nil save!