summaryrefslogtreecommitdiff
path: root/src/mongo/db/repl/repl_set_commands.cpp
diff options
context:
space:
mode:
authorSiyuan Zhou <siyuan.zhou@mongodb.com>2017-04-20 15:28:38 -0400
committerSiyuan Zhou <siyuan.zhou@mongodb.com>2017-04-20 22:36:43 -0400
commit4680351e3fe6f8f47c04440f1c5d1232a4ab7b2d (patch)
treedae7b10842b2e1899a683adf4a545759182ce2ab /src/mongo/db/repl/repl_set_commands.cpp
parent8b437e7a762e3ef99848659dc0d68df1e2add0a4 (diff)
downloadmongo-4680351e3fe6f8f47c04440f1c5d1232a4ab7b2d.tar.gz
SERVER-26848 Exit catchup mode when not syncing more data.
This reverts commit c08590a6ac9dc54c9d910822d47ea17140b56f89.
Diffstat (limited to 'src/mongo/db/repl/repl_set_commands.cpp')
-rw-r--r--src/mongo/db/repl/repl_set_commands.cpp35
1 files changed, 34 insertions, 1 deletions
diff --git a/src/mongo/db/repl/repl_set_commands.cpp b/src/mongo/db/repl/repl_set_commands.cpp
index 6348f72bfbd..09226ba0237 100644
--- a/src/mongo/db/repl/repl_set_commands.cpp
+++ b/src/mongo/db/repl/repl_set_commands.cpp
@@ -868,7 +868,7 @@ public:
status = getGlobalReplicationCoordinator()->stepUpIfEligible();
if (!status.isOK()) {
- log() << "replSetStepUp request failed " << causedBy(status);
+ log() << "replSetStepUp request failed" << causedBy(status);
}
return appendCommandStatus(result, status);
@@ -880,5 +880,38 @@ private:
}
} cmdReplSetStepUp;
+class CmdReplSetAbortPrimaryCatchUp : public ReplSetCommand {
+public:
+ virtual void help(stringstream& help) const {
+ help << "{ CmdReplSetAbortPrimaryCatchUp : 1 }\n";
+ help << "Abort primary catch-up mode; immediately finish the transition to primary "
+ "without fetching any further unreplicated writes from any other online nodes";
+ }
+
+ CmdReplSetAbortPrimaryCatchUp() : ReplSetCommand("replSetAbortPrimaryCatchUp") {}
+
+ virtual bool run(OperationContext* opCtx,
+ const string&,
+ BSONObj& cmdObj,
+ string& errmsg,
+ BSONObjBuilder& result) override {
+ Status status = getGlobalReplicationCoordinator()->checkReplEnabledForCommand(&result);
+ if (!status.isOK())
+ return appendCommandStatus(result, status);
+ log() << "Received replSetAbortPrimaryCatchUp request";
+
+ status = getGlobalReplicationCoordinator()->abortCatchupIfNeeded();
+ if (!status.isOK()) {
+ log() << "replSetAbortPrimaryCatchUp request failed" << causedBy(status);
+ }
+ return appendCommandStatus(result, status);
+ }
+
+private:
+ ActionSet getAuthActionSet() const override {
+ return ActionSet{ActionType::replSetStateChange};
+ }
+} cmdReplSetAbortPrimaryCatchUp;
+
} // namespace repl
} // namespace mongo