#include <userver/storages/mongo/dist_lock_strategy.hpp>
Strategy for MongoDB-based distributed locking.
Definition at line 17 of file dist_lock_strategy.hpp.
|
|
| DistLockStrategy (Collection collection, std::string lock_name) |
| | Targets a distributed lock in a specified collection as a host.
|
|
| DistLockStrategy (Collection collection, std::string lock_name, std::string owner) |
| void | Acquire (std::chrono::milliseconds lock_ttl, const std::string &locker_id) override |
| void | Prolong (std::chrono::milliseconds lock_ttl, const std::string &locker_id) override |
| void | Release (const std::string &locker_id) override |
◆ Acquire()
| void storages::mongo::DistLockStrategy::Acquire |
( |
std::chrono::milliseconds | lock_ttl, |
|
|
const std::string & | locker_id ) |
|
overridevirtual |
Acquires the distributed lock.
- Parameters
-
| lock_ttl | The duration for which the lock must be held. |
| locker_id | Globally unique ID of the locking entity. |
- Exceptions
-
| LockIsAcquiredByAnotherHostError | when the lock is busy |
| anything | else when the locking fails, strategy is responsible for cleanup, Release won't be invoked. |
Implements dist_lock::DistLockStrategyBase.
◆ Prolong()
| void storages::mongo::DistLockStrategy::Prolong |
( |
std::chrono::milliseconds | lock_ttl, |
|
|
const std::string & | locker_id ) |
|
overridevirtual |
Prolongs (refreshes the TTL of) a lock already held by locker_id.
Called instead of Acquire() on every refresh while the lock is held, so backends may implement a cheaper query than the full Acquire().
- Parameters
-
| lock_ttl | The new duration for which the lock must be held. |
| locker_id | Globally unique ID of the locking entity, must be the same as in Acquire(). |
- Exceptions
-
| LockIsAcquiredByAnotherHostException | when the lock is no longer held by locker_id (ownership was lost) |
| anything | else when the prolongation fails, strategy is responsible for cleanup, Release won't be invoked. |
- Note
- The default implementation simply calls Acquire(), preserving the legacy behaviour for strategies that do not override it.
Reimplemented from dist_lock::DistLockStrategyBase.
◆ Release()
| void storages::mongo::DistLockStrategy::Release |
( |
const std::string & | locker_id | ) |
|
|
overridevirtual |
The documentation for this class was generated from the following file: