9898: Check previous state after obtaining row lock.
authorTom Clegg <tom@curoverse.com>
Thu, 8 Sep 2016 20:14:22 +0000 (16:14 -0400)
committerTom Clegg <tom@curoverse.com>
Thu, 8 Sep 2016 20:14:22 +0000 (16:14 -0400)
services/api/app/models/container.rb

index ba169cc1276ebbd7d15e6a255ad8ff0427de3082..11040ff3467e5a0631e0ac2311d98f21c3e4030b 100644 (file)
@@ -77,20 +77,20 @@ class Container < ArvadosModel
   end
 
   def lock
-    if self.state == Locked
-      raise AlreadyLockedError
-    end
     with_lock do
+      if self.state == Locked
+        raise AlreadyLockedError
+      end
       self.state = Locked
       self.save!
     end
   end
 
   def unlock
-    if self.state == Queued
-      raise InvalidStateTransitionError
-    end
     with_lock do
+      if self.state == Queued
+        raise InvalidStateTransitionError
+      end
       self.state = Queued
       self.save!
     end