- 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
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel