This is an automated email from the ASF dual-hosted git repository. alexey pushed a commit to branch branch-1.12.x in repository https://gitbox.apache.org/repos/asf/kudu.git
commit e69b67367c09470a802516cba252c3f3c400871d Author: Alexey Serbin <[email protected]> AuthorDate: Wed Apr 15 14:56:11 2020 -0700 Revert "[catalog_manager] reduce contention in ScopedLeaderSharedLock" This reverts commit 1b5c143b5323e82e33e79098269b46544cf4be09. Change-Id: Ia3757004421de0a06319ba392de7ed142624911c Reviewed-on: http://gerrit.cloudera.org:8080/15741 Reviewed-by: Hao Hao <[email protected]> Tested-by: Kudu Jenkins --- src/kudu/master/catalog_manager.cc | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/src/kudu/master/catalog_manager.cc b/src/kudu/master/catalog_manager.cc index 598c5f6..af1b5f1 100644 --- a/src/kudu/master/catalog_manager.cc +++ b/src/kudu/master/catalog_manager.cc @@ -5316,16 +5316,12 @@ CatalogManager::ScopedLeaderSharedLock::ScopedLeaderSharedLock( initial_term_(-1) { // Check if the catalog manager is running. - int64_t leader_ready_term; - { - std::lock_guard<simple_spinlock> l(catalog_->state_lock_); - if (PREDICT_FALSE(catalog_->state_ != kRunning)) { - catalog_status_ = Status::ServiceUnavailable( - Substitute("Catalog manager is not initialized. State: $0", - StateToString(catalog_->state_))); - return; - } - leader_ready_term = catalog_->leader_ready_term_; + std::lock_guard<simple_spinlock> l(catalog_->state_lock_); + if (PREDICT_FALSE(catalog_->state_ != kRunning)) { + catalog_status_ = Status::ServiceUnavailable( + Substitute("Catalog manager is not initialized. State: $0", + StateToString(catalog_->state_))); + return; } ConsensusStatePB cstate; @@ -5347,7 +5343,7 @@ CatalogManager::ScopedLeaderSharedLock::ScopedLeaderSharedLock( uuid, SecureShortDebugString(cstate))); return; } - if (PREDICT_FALSE(leader_ready_term != initial_term_ || + if (PREDICT_FALSE(catalog_->leader_ready_term_ != cstate.current_term() || !leader_shared_lock_.owns_lock())) { leader_status_ = Status::ServiceUnavailable( "Leader not yet ready to serve requests");
