diff options
author | Scott Hernandez <scotthernandez@gmail.com> | 2014-11-07 08:22:44 -0500 |
---|---|---|
committer | Scott Hernandez <scotthernandez@gmail.com> | 2014-11-13 10:52:25 -0500 |
commit | 7dc63fa1a8d6937e9dd2c029da002a7a99372b57 (patch) | |
tree | ccd6248aea91a87d8f70ac0cd459f5d1d7496240 | |
parent | 44461e50ac7124b76564a400948ed7b9173504b4 (diff) | |
download | mongo-7dc63fa1a8d6937e9dd2c029da002a7a99372b57.tar.gz |
SERVER-16008: log remote member state changes
-rw-r--r-- | src/mongo/db/repl/member_heartbeat_data.cpp | 16 | ||||
-rw-r--r-- | src/mongo/db/repl/member_heartbeat_data.h | 8 | ||||
-rw-r--r-- | src/mongo/db/repl/topology_coordinator_impl.cpp | 11 |
3 files changed, 18 insertions, 17 deletions
diff --git a/src/mongo/db/repl/member_heartbeat_data.cpp b/src/mongo/db/repl/member_heartbeat_data.cpp index 9892a5821b2..8ca22c40649 100644 --- a/src/mongo/db/repl/member_heartbeat_data.cpp +++ b/src/mongo/db/repl/member_heartbeat_data.cpp @@ -33,6 +33,8 @@ #include <climits> #include "mongo/db/repl/member_heartbeat_data.h" +#include "mongo/db/repl/rslog.h" +#include "mongo/util/log.h" namespace mongo { namespace repl { @@ -49,11 +51,9 @@ namespace repl { _lastResponse.setOpTime(OpTime()); } - void MemberHeartbeatData::setState(MemberState newState) { - _lastResponse.setState(newState); - } - - void MemberHeartbeatData::setUpValues(Date_t now, ReplSetHeartbeatResponse hbResponse) { + void MemberHeartbeatData::setUpValues(Date_t now, + const HostAndPort& host, + ReplSetHeartbeatResponse hbResponse) { _health = 1; if (_upSince == 0) { _upSince = now; @@ -70,6 +70,12 @@ namespace repl { hbResponse.setOpTime(_lastResponse.getOpTime()); } + // Log if the state changes + if (_lastResponse.getState() != hbResponse.getState()){ + log() << "Member " << host.toString() << " is now in state " + << hbResponse.getState().toString() << rsLog; + } + _lastResponse = hbResponse; } diff --git a/src/mongo/db/repl/member_heartbeat_data.h b/src/mongo/db/repl/member_heartbeat_data.h index e268a4f58e5..624c572d33f 100644 --- a/src/mongo/db/repl/member_heartbeat_data.h +++ b/src/mongo/db/repl/member_heartbeat_data.h @@ -73,15 +73,9 @@ namespace repl { bool maybeUp() const { return _health != 0; } /** - * Sets the member's state to "newState". This is principally valuable when modeling - * step-down of the the local node. - */ - void setState(MemberState newState); - - /** * Sets values in this object from the results of a successful heartbeat command. */ - void setUpValues(Date_t now, ReplSetHeartbeatResponse hbResponse); + void setUpValues(Date_t now, const HostAndPort& host, ReplSetHeartbeatResponse hbResponse); /** * Sets values in this object from the results of a erroring/failed heartbeat command. diff --git a/src/mongo/db/repl/topology_coordinator_impl.cpp b/src/mongo/db/repl/topology_coordinator_impl.cpp index 1a8ff9dd60a..36548468689 100644 --- a/src/mongo/db/repl/topology_coordinator_impl.cpp +++ b/src/mongo/db/repl/topology_coordinator_impl.cpp @@ -857,15 +857,15 @@ namespace { invariant(memberIndex != _selfIndex); MemberHeartbeatData& hbData = _hbdata[memberIndex]; + const MemberConfig member = _currentConfig.getMemberAt(memberIndex); if (!hbResponse.isOK()) { if (isUnauthorized) { LOG(3) << "setAuthIssue: heartbeat response failed due to authentication" - " issue for member _id:" - << _currentConfig.getMemberAt(memberIndex).getId(); + " issue for member _id:" << member.getId(); hbData.setAuthIssue(now); } else { LOG(3) << "setDownValues: heartbeat response failed for member _id:" - << _currentConfig.getMemberAt(memberIndex).getId() << ", msg: " + << member.getId() << ", msg: " << hbResponse.getStatus().reason(); hbData.setDownValues(now, hbResponse.getStatus().reason()); @@ -874,9 +874,9 @@ namespace { else { ReplSetHeartbeatResponse hbr = hbResponse.getValue(); LOG(3) << "setUpValues: heartbeat response good for member _id:" - << _currentConfig.getMemberAt(memberIndex).getId() << ", msg: " + << member.getId() << ", msg: " << hbr.getHbMsg(); - hbData.setUpValues(now, hbr); + hbData.setUpValues(now, member.getHostAndPort(), hbr); } HeartbeatResponseAction nextAction = _updateHeartbeatDataImpl( memberIndex, @@ -1241,6 +1241,7 @@ namespace { hbResponse.setHbMsg(""); _hbdata[primaryIndex].setUpValues( _hbdata[primaryIndex].getLastHeartbeat(), + _currentConfig.getMemberAt(primaryIndex).getHostAndPort(), hbResponse); } _currentPrimaryIndex = primaryIndex; |