- Revert #3108 and #3173 - To avoid dual active controller, node already give up promotion has set role to QUIESCED should not promote active anyway. --- src/rde/rded/role.cc | 18 +++++------------- src/rde/rded/role.h | 1 - 2 files changed, 5 insertions(+), 14 deletions(-)
diff --git a/src/rde/rded/role.cc b/src/rde/rded/role.cc index ae588780f..2eae363d9 100644 --- a/src/rde/rded/role.cc +++ b/src/rde/rded/role.cc @@ -110,6 +110,10 @@ void Role::PromoteNode(const uint64_t cluster_size, return; } else if (rc != SA_AIS_OK && relaxed_mode == true) { LOG_WA("Unable to set active controller in consensus service"); + if (role_ == PCS_RDA_QUIESCED) { + LOG_WA("Another controller is already promoted"); + return; + } LOG_WA("Will become active anyway"); promotion_pending = true; } else if (rc != SA_AIS_OK) { @@ -262,8 +266,7 @@ bool Role::IsCandidate() { // if relaxed node promotion is enabled, allow this node to be promoted // active if it can see a peer SC and this node has the lowest node ID if (consensus_service.IsRelaxedNodePromotionEnabled() == true && - (cb->state == State::kNotActive || - (cb->state == State::kNotActiveSeenPeer && IsLowestNodeid()))) { + cb->state == State::kNotActiveSeenPeer) { LOG_NO("Relaxed node promotion enabled. This node is a candidate."); result = true; } @@ -282,17 +285,6 @@ bool Role::IsPeerPresent() { return result; } -bool Role::IsLowestNodeid() { - bool result = true; - RDE_CONTROL_BLOCK* cb = rde_get_control_block(); - - for (auto peer_id : cb->peer_controllers) { - if (peer_id < own_node_id_) - return false; - } - return result; -} - uint32_t Role::SetRole(PCS_RDA_ROLE new_role) { TRACE_ENTER(); PCS_RDA_ROLE old_role = role_; diff --git a/src/rde/rded/role.h b/src/rde/rded/role.h index 9bf1b10bd..9c63cbe7b 100644 --- a/src/rde/rded/role.h +++ b/src/rde/rded/role.h @@ -38,7 +38,6 @@ class Role { void AddPeer(NODE_ID node_id); bool IsCandidate(); bool IsPeerPresent(); - bool IsLowestNodeid(); void SetPeerState(PCS_RDA_ROLE node_role, NODE_ID node_id); timespec* Poll(timespec* ts); uint32_t SetRole(PCS_RDA_ROLE new_role); -- 2.17.1 _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel