class MongoMutex::Mutex::MongoOperations
Public Instance Methods
lock_info(collection, lock_id)
click to toggle source
# File lib/mongo_mutex/mutex.rb, line 80 def lock_info(collection, lock_id) collection.find({_id: lock_id}, limit: 1).first end
try_lock(collection, lock_id, locker_id, now, lock_retention_timeout)
click to toggle source
# File lib/mongo_mutex/mutex.rb, line 84 def try_lock(collection, lock_id, locker_id, now, lock_retention_timeout) collection.find_one_and_update( {:_id => lock_id, :$or => [ {locked_at: {:$lt => now - lock_retention_timeout}}, {locked_by: locker_id}, {locked_by: {:$exists => 0}}, ]}, {_id: lock_id, locked_by: locker_id, locked_at: now}, upsert: true, ) end
unlock(collection, lock_id, locker_id, now, lock_retention_support)
click to toggle source
# File lib/mongo_mutex/mutex.rb, line 96 def unlock(collection, lock_id, locker_id, now, lock_retention_support) collection.find_one_and_update( {_id: lock_id, locked_by: locker_id, locked_at: {:$gte => now - lock_retention_support}}, {:$unset => {locked_by: 1, locked_at: 1}}, ) end