diff options
author | Louis Williams <louis.williams@mongodb.com> | 2017-09-19 16:17:57 -0400 |
---|---|---|
committer | Louis Williams <louis.williams@mongodb.com> | 2017-09-19 16:37:10 -0400 |
commit | d78666cf8dd33359b4e536e160409ebcbeb2fd24 (patch) | |
tree | 6926f0df6c99daf84fc0d43b8caea13dd5e8acc3 | |
parent | 7cea0293f50dd280be0287c2d744caaf66016d01 (diff) | |
download | mongo-d78666cf8dd33359b4e536e160409ebcbeb2fd24.tar.gz |
SERVER-29428 Have mongod fail gracefully when featureCompatibilityVersion is of a higher version
(cherry picked from commit b35c6fc183c26bc8a6d7cdfc8f5b970f90d60b56)
-rw-r--r-- | src/mongo/executor/network_interface_asio_auth.cpp | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/src/mongo/executor/network_interface_asio_auth.cpp b/src/mongo/executor/network_interface_asio_auth.cpp index 1f2039dbd1e..81f9ab9d841 100644 --- a/src/mongo/executor/network_interface_asio_auth.cpp +++ b/src/mongo/executor/network_interface_asio_auth.cpp @@ -38,6 +38,7 @@ #include "mongo/db/auth/authorization_manager_global.h" #include "mongo/db/auth/internal_user_auth.h" #include "mongo/db/commands.h" +#include "mongo/db/commands/feature_compatibility_version_command_parser.h" #include "mongo/db/server_options.h" #include "mongo/db/wire_version.h" #include "mongo/rpc/factory.h" @@ -46,8 +47,10 @@ #include "mongo/rpc/metadata/client_metadata.h" #include "mongo/rpc/reply_interface.h" #include "mongo/stdx/memory.h" +#include "mongo/util/exit.h" #include "mongo/util/log.h" #include "mongo/util/net/ssl_manager.h" +#include "mongo/util/quick_exit.h" #include "mongo/util/version.h" namespace mongo { @@ -116,9 +119,19 @@ void NetworkInterfaceASIO::_runIsMaster(AsyncOp* op) { auto validateStatus = rpc::validateWireVersion(WireSpec::instance().outgoing, protocolSet.getValue().version); if (!validateStatus.isOK()) { - warning() << "remote host has incompatible wire version: " << validateStatus; - return _completeOperation(op, validateStatus); + if (WireSpec::instance().isInternalClient) { + severe() << "remote host has incompatible wire version: " << validateStatus; + severe() << "Please consult the documentation for upgrading this server: " + << "http://dochub.mongodb.org/core/3.6-feature-compatibility"; + + // Exit if mongod should be upgraded. + quickExit(EXIT_NEED_UPGRADE); + } else { + warning() << "remote host has incompatible wire version: " << validateStatus; + + return _completeOperation(op, validateStatus); + } } op->connection().setServerProtocols(protocolSet.getValue().protocolSet); |