]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/rocksdb/utilities/transactions/lock/lock_manager.cc
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / rocksdb / utilities / transactions / lock / lock_manager.cc
index 200b15390ab6bc265cf5885fccbbf0b0974fc76d..df16b32ad9a4ff1aaf62a5f0a04c5d56f698db24 100644 (file)
 
 namespace ROCKSDB_NAMESPACE {
 
-LockManager* NewLockManager(PessimisticTransactionDB* db,
-                            const TransactionDBOptions& opt) {
+std::shared_ptr<LockManager> NewLockManager(PessimisticTransactionDB* db,
+                                            const TransactionDBOptions& opt) {
   assert(db);
-  // TODO: determine the lock manager implementation based on configuration.
-  return new PointLockManager(db, opt);
+  if (opt.lock_mgr_handle) {
+    // A custom lock manager was provided in options
+    auto mgr = opt.lock_mgr_handle->getLockManager();
+    return std::shared_ptr<LockManager>(opt.lock_mgr_handle, mgr);
+  } else {
+    // Use a point lock manager by default
+    return std::shared_ptr<LockManager>(new PointLockManager(db, opt));
+  }
 }
 
 }  // namespace ROCKSDB_NAMESPACE