From 392ce8a1d27f02295350b9c11d447b3bd2926aa7 Mon Sep 17 00:00:00 2001 From: "darion.yaphet" Date: Fri, 25 Feb 2022 01:47:19 +0800 Subject: [PATCH] increase heartbeat lock to avoid blocking --- src/meta/processors/Common.h | 5 +++++ src/meta/processors/admin/CreateBackupProcessor.cpp | 2 +- src/meta/processors/admin/CreateSnapshotProcessor.cpp | 2 +- src/meta/processors/admin/DropSnapshotProcessor.cpp | 2 +- src/meta/processors/index/CreateEdgeIndexProcessor.cpp | 1 + src/meta/processors/index/CreateTagIndexProcessor.cpp | 1 + src/meta/processors/parts/DropSpaceProcessor.cpp | 1 + src/meta/processors/schema/AlterEdgeProcessor.cpp | 1 + src/meta/processors/schema/AlterTagProcessor.cpp | 1 + src/meta/processors/schema/DropEdgeProcessor.cpp | 1 + src/meta/processors/schema/DropTagProcessor.cpp | 1 + 11 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/meta/processors/Common.h b/src/meta/processors/Common.h index 8b97d7d33a0..9def0c3427d 100644 --- a/src/meta/processors/Common.h +++ b/src/meta/processors/Common.h @@ -19,6 +19,11 @@ class LockUtils { static folly::SharedMutex lock; return lock; } + + static folly::SharedMutex& snapshotLock() { + static folly::SharedMutex snapshotLock; + return snapshotLock; + } }; } // namespace meta diff --git a/src/meta/processors/admin/CreateBackupProcessor.cpp b/src/meta/processors/admin/CreateBackupProcessor.cpp index 4263ea4e567..b345a9f0e3a 100644 --- a/src/meta/processors/admin/CreateBackupProcessor.cpp +++ b/src/meta/processors/admin/CreateBackupProcessor.cpp @@ -97,7 +97,7 @@ void CreateBackupProcessor::process(const cpp2::CreateBackupReq& req) { return; } - folly::SharedMutex::WriteHolder holder(LockUtils::lock()); + folly::SharedMutex::WriteHolder holder(LockUtils::snapshotLock()); // get active storage host list auto activeHostsRet = ActiveHostsMan::getActiveHosts(kvstore_); if (!nebula::ok(activeHostsRet)) { diff --git a/src/meta/processors/admin/CreateSnapshotProcessor.cpp b/src/meta/processors/admin/CreateSnapshotProcessor.cpp index 5d5536822a4..90c7bbd89c6 100644 --- a/src/meta/processors/admin/CreateSnapshotProcessor.cpp +++ b/src/meta/processors/admin/CreateSnapshotProcessor.cpp @@ -31,7 +31,7 @@ void CreateSnapshotProcessor::process(const cpp2::CreateSnapshotReq&) { } auto snapshot = folly::sformat("SNAPSHOT_{}", MetaKeyUtils::genTimestampStr()); - folly::SharedMutex::WriteHolder holder(LockUtils::lock()); + folly::SharedMutex::WriteHolder holder(LockUtils::snapshotLock()); auto activeHostsRet = ActiveHostsMan::getActiveHosts(kvstore_); if (!nebula::ok(activeHostsRet)) { diff --git a/src/meta/processors/admin/DropSnapshotProcessor.cpp b/src/meta/processors/admin/DropSnapshotProcessor.cpp index b339f52dd35..641c03633fd 100644 --- a/src/meta/processors/admin/DropSnapshotProcessor.cpp +++ b/src/meta/processors/admin/DropSnapshotProcessor.cpp @@ -13,7 +13,7 @@ namespace meta { void DropSnapshotProcessor::process(const cpp2::DropSnapshotReq& req) { auto& snapshot = req.get_name(); - folly::SharedMutex::WriteHolder holder(LockUtils::lock()); + folly::SharedMutex::WriteHolder holder(LockUtils::snapshotLock()); // Check snapshot is exists auto key = MetaKeyUtils::snapshotKey(snapshot); diff --git a/src/meta/processors/index/CreateEdgeIndexProcessor.cpp b/src/meta/processors/index/CreateEdgeIndexProcessor.cpp index 7c83e3ca568..ab5e97f06e9 100644 --- a/src/meta/processors/index/CreateEdgeIndexProcessor.cpp +++ b/src/meta/processors/index/CreateEdgeIndexProcessor.cpp @@ -36,6 +36,7 @@ void CreateEdgeIndexProcessor::process(const cpp2::CreateEdgeIndexReq& req) { return; } + folly::SharedMutex::ReadHolder rHolder(LockUtils::snapshotLock()); folly::SharedMutex::WriteHolder holder(LockUtils::lock()); auto ret = getIndexID(space, indexName); if (nebula::ok(ret)) { diff --git a/src/meta/processors/index/CreateTagIndexProcessor.cpp b/src/meta/processors/index/CreateTagIndexProcessor.cpp index 5b44a8663be..e0ab420d686 100644 --- a/src/meta/processors/index/CreateTagIndexProcessor.cpp +++ b/src/meta/processors/index/CreateTagIndexProcessor.cpp @@ -36,6 +36,7 @@ void CreateTagIndexProcessor::process(const cpp2::CreateTagIndexReq& req) { return; } + folly::SharedMutex::ReadHolder rHolder(LockUtils::snapshotLock()); folly::SharedMutex::WriteHolder holder(LockUtils::lock()); auto ret = getIndexID(space, indexName); if (nebula::ok(ret)) { diff --git a/src/meta/processors/parts/DropSpaceProcessor.cpp b/src/meta/processors/parts/DropSpaceProcessor.cpp index b15c0cbbef8..aeeaaff8543 100644 --- a/src/meta/processors/parts/DropSpaceProcessor.cpp +++ b/src/meta/processors/parts/DropSpaceProcessor.cpp @@ -9,6 +9,7 @@ namespace nebula { namespace meta { void DropSpaceProcessor::process(const cpp2::DropSpaceReq& req) { + folly::SharedMutex::ReadHolder rHolder(LockUtils::snapshotLock()); folly::SharedMutex::WriteHolder holder(LockUtils::lock()); const auto& spaceName = req.get_space_name(); auto spaceRet = getSpaceId(spaceName); diff --git a/src/meta/processors/schema/AlterEdgeProcessor.cpp b/src/meta/processors/schema/AlterEdgeProcessor.cpp index d88cf0da2f1..6850e6fa914 100644 --- a/src/meta/processors/schema/AlterEdgeProcessor.cpp +++ b/src/meta/processors/schema/AlterEdgeProcessor.cpp @@ -15,6 +15,7 @@ void AlterEdgeProcessor::process(const cpp2::AlterEdgeReq& req) { CHECK_SPACE_ID_AND_RETURN(spaceId); const auto& edgeName = req.get_edge_name(); + folly::SharedMutex::ReadHolder rHolder(LockUtils::snapshotLock()); folly::SharedMutex::WriteHolder holder(LockUtils::lock()); auto ret = getEdgeType(spaceId, edgeName); if (!nebula::ok(ret)) { diff --git a/src/meta/processors/schema/AlterTagProcessor.cpp b/src/meta/processors/schema/AlterTagProcessor.cpp index e322e98e66f..c741b37fd6d 100644 --- a/src/meta/processors/schema/AlterTagProcessor.cpp +++ b/src/meta/processors/schema/AlterTagProcessor.cpp @@ -15,6 +15,7 @@ void AlterTagProcessor::process(const cpp2::AlterTagReq& req) { CHECK_SPACE_ID_AND_RETURN(spaceId); const auto& tagName = req.get_tag_name(); + folly::SharedMutex::ReadHolder rHolder(LockUtils::snapshotLock()); folly::SharedMutex::WriteHolder holder(LockUtils::lock()); auto ret = getTagId(spaceId, tagName); if (!nebula::ok(ret)) { diff --git a/src/meta/processors/schema/DropEdgeProcessor.cpp b/src/meta/processors/schema/DropEdgeProcessor.cpp index 74a53ce82af..b098bc14aeb 100644 --- a/src/meta/processors/schema/DropEdgeProcessor.cpp +++ b/src/meta/processors/schema/DropEdgeProcessor.cpp @@ -12,6 +12,7 @@ void DropEdgeProcessor::process(const cpp2::DropEdgeReq& req) { GraphSpaceID spaceId = req.get_space_id(); CHECK_SPACE_ID_AND_RETURN(spaceId); + folly::SharedMutex::ReadHolder rHolder(LockUtils::snapshotLock()); folly::SharedMutex::WriteHolder holder(LockUtils::lock()); const auto& edgeName = req.get_edge_name(); diff --git a/src/meta/processors/schema/DropTagProcessor.cpp b/src/meta/processors/schema/DropTagProcessor.cpp index 3bf1243e76d..bc37bc2b06b 100644 --- a/src/meta/processors/schema/DropTagProcessor.cpp +++ b/src/meta/processors/schema/DropTagProcessor.cpp @@ -12,6 +12,7 @@ void DropTagProcessor::process(const cpp2::DropTagReq& req) { GraphSpaceID spaceId = req.get_space_id(); CHECK_SPACE_ID_AND_RETURN(spaceId); + folly::SharedMutex::ReadHolder rHolder(LockUtils::snapshotLock()); folly::SharedMutex::WriteHolder holder(LockUtils::lock()); const auto& tagName = req.get_tag_name();