80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
# File 'lib/dyna_model/extensions/lock.rb', line 80
def self.release(lock_name, options={})
lock_obj = self.new(
lock_name: lock_name,
locked_at: nil,
expires_at: nil,
locked_by: nil
)
if lock_obj.save(expected: {
:locked_by.eq => self.locked_by
})
DynaModel::Config.logger.info "Released lock '#{lock_name}'"
true
else
raise "Error releasing lock: #{lock_obj.errors.full_messages.to_sentence}"
end
rescue AWS::DynamoDB::Errors::ConditionalCheckFailedException => e
DynaModel::Config.logger.info "Condition failed to release lock '#{lock_name}'"
end
|