diff options
author | Siyuan Zhou <siyuan.zhou@mongodb.com> | 2017-04-20 15:28:38 -0400 |
---|---|---|
committer | Siyuan Zhou <siyuan.zhou@mongodb.com> | 2017-04-20 22:36:43 -0400 |
commit | 4680351e3fe6f8f47c04440f1c5d1232a4ab7b2d (patch) | |
tree | dae7b10842b2e1899a683adf4a545759182ce2ab /src/mongo/db/repl/repl_set_commands.cpp | |
parent | 8b437e7a762e3ef99848659dc0d68df1e2add0a4 (diff) | |
download | mongo-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.cpp | 35 |
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 |