---
src/app/models/instance_observer.rb | 20 ++++++++++++++------
1 files changed, 14 insertions(+), 6 deletions(-)
diff --git a/src/app/models/instance_observer.rb b/src/app/models/instance_observer.rb
index 9d13fb0..06ba2ef 100644
--- a/src/app/models/instance_observer.rb
+++ b/src/app/models/instance_observer.rb
@@ -65,13 +65,21 @@ class InstanceObserver < ActiveRecord::Observer
elsif RUNNING_STATES.include?(state_from) &&
!RUNNING_STATES.include?(state_to)
quota.running_instances -= 1
end
-
- if !ACTIVE_STATES.include?(state_from) &&
ACTIVE_STATES.include?(state_to)
- quota.total_instances += 1
- elsif ACTIVE_STATES.include?(state_from) &&
!ACTIVE_STATES.include?(state_to)
- quota.total_instances -= 1
- end
- quota.save!
+ quota.transaction do
+ quota.lock!
+ if !RUNNING_STATES.include?(state_from) &&
RUNNING_STATES.include?(state_to)
+ quota.running_instances += 1
+ elsif RUNNING_STATES.include?(state_from) &&
!RUNNING_STATES.include?(state_to)
+ quota.running_instances -= 1
+ end
+
+ if !ACTIVE_STATES.include?(state_from) &&
ACTIVE_STATES.include?(state_to)
+ quota.total_instances += 1
+ elsif ACTIVE_STATES.include?(state_from) &&
!ACTIVE_STATES.include?(state_to)
+ quota.total_instances -= 1
+ end
+ quota.save!
+ end
end
end
end
--
1.7.1