git-hulk commented on code in PR #577:
URL: https://github.com/apache/incubator-kvrocks/pull/577#discussion_r873158083
##########
src/lock_manager.cc:
##########
@@ -51,3 +51,7 @@ void LockManager::Lock(const rocksdb::Slice &key) {
void LockManager::UnLock(const rocksdb::Slice &key) {
mutex_pool_[hash(key)]->unlock();
}
+
+void LockManager::LockTwo(const rocksdb::Slice &first_key, const
rocksdb::Slice &second_key) {
+ std::lock(*mutex_pool_[hash(first_key)], *mutex_pool_[hash(second_key)]);
Review Comment:
My bad. They are two points:
1. Lock two keys without checking the hash value may cause deadlock
2. `MultiLockGuard` may be better than `TwoLockGuard` since it can be used
in other scenarios
The current implementation also makes sense to me. Except we should check
whether the hash value is same or not, only lock once if yes.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]