diff options
author | matt dannenberg <matt.dannenberg@10gen.com> | 2015-04-22 10:05:56 -0400 |
---|---|---|
committer | matt dannenberg <matt.dannenberg@10gen.com> | 2015-04-24 04:05:21 -0400 |
commit | 22596ecf7fc0ef83d8ee7db63d00793b08d8541e (patch) | |
tree | 2529c4f38812ea7b28d0e8fcc907bfba38263e93 /src/mongo/db/repl/replset_commands.cpp | |
parent | 1655e260f640dadc696684afb6766b86199a665b (diff) | |
download | mongo-22596ecf7fc0ef83d8ee7db63d00793b08d8541e.tar.gz |
SERVER-18191 make new heartbeat args/response classes for the new election protocol
Diffstat (limited to 'src/mongo/db/repl/replset_commands.cpp')
-rw-r--r-- | src/mongo/db/repl/replset_commands.cpp | 40 |
1 files changed, 28 insertions, 12 deletions
diff --git a/src/mongo/db/repl/replset_commands.cpp b/src/mongo/db/repl/replset_commands.cpp index d160351c6b0..bedbf59a05a 100644 --- a/src/mongo/db/repl/replset_commands.cpp +++ b/src/mongo/db/repl/replset_commands.cpp @@ -46,7 +46,9 @@ #include "mongo/db/repl/initial_sync.h" #include "mongo/db/repl/oplog.h" #include "mongo/db/repl/repl_set_heartbeat_args.h" +#include "mongo/db/repl/repl_set_heartbeat_args_v1.h" #include "mongo/db/repl/repl_set_heartbeat_response.h" +#include "mongo/db/repl/repl_set_heartbeat_response_v1.h" #include "mongo/db/repl/replication_coordinator_global.h" #include "mongo/db/repl/replication_coordinator_external_state_impl.h" #include "mongo/db/repl/replication_executor.h" @@ -710,22 +712,36 @@ namespace { mp->tag |= ReplicationExecutor::NetworkInterface::kMessagingPortKeepOpen; } - ReplSetHeartbeatArgs args; - status = args.initialize(cmdObj); - if (!status.isOK()) { + if (getGlobalReplicationCoordinator()->isV1ElectionProtocol()) { + ReplSetHeartbeatArgsV1 args; + status = args.initialize(cmdObj); + if (!status.isOK()) { + return appendCommandStatus(result, status); + } + ReplSetHeartbeatResponseV1 response; + status = getGlobalReplicationCoordinator()->processHeartbeatV1(args, &response); + if (status.isOK()) + response.addToBSON(&result); return appendCommandStatus(result, status); } + else { + ReplSetHeartbeatArgs args; + status = args.initialize(cmdObj); + if (!status.isOK()) { + return appendCommandStatus(result, status); + } - // ugh. - if (args.getCheckEmpty()) { - result.append("hasData", replHasDatabases(txn)); - } + // ugh. + if (args.getCheckEmpty()) { + result.append("hasData", replHasDatabases(txn)); + } - ReplSetHeartbeatResponse response; - status = getGlobalReplicationCoordinator()->processHeartbeat(args, &response); - if (status.isOK()) - response.addToBSON(&result); - return appendCommandStatus(result, status); + ReplSetHeartbeatResponse response; + status = getGlobalReplicationCoordinator()->processHeartbeat(args, &response); + if (status.isOK()) + response.addToBSON(&result); + return appendCommandStatus(result, status); + } } } cmdReplSetHeartbeat; |