summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Pasette <dan@mongodb.com>2017-09-18 13:15:48 -0400
committerDan Pasette <dan@mongodb.com>2017-09-20 15:07:45 -0400
commitd5d61785d59f62e29ba01843f8c15cf08a5ca55a (patch)
tree72e5ce5ed4948b206ed7eab302e08873d5c64975
parent7a15db88968b9f6dd4418f4a89a2826c82b2ecac (diff)
downloadmongo-d5d61785d59f62e29ba01843f8c15cf08a5ca55a.tar.gz
SERVER-21677 Remove "diaglog" support from the server
-rw-r--r--debian/mongod.186
-rw-r--r--debian/mongosniff.1200
-rw-r--r--jstests/auth/lib/commands_lib.js14
-rw-r--r--jstests/core/views/views_all_commands.js1
-rw-r--r--jstests/sharding/safe_secondary_reads_drop_recreate.js1
-rw-r--r--jstests/sharding/safe_secondary_reads_single_migration_suspend_range_deletion.js1
-rw-r--r--jstests/sharding/safe_secondary_reads_single_migration_waitForDelete.js1
-rw-r--r--src/mongo/db/SConscript13
-rw-r--r--src/mongo/db/auth/action_types.txt1
-rw-r--r--src/mongo/db/auth/role_graph_builtin_roles.cpp1
-rw-r--r--src/mongo/db/commands/dbcommands.cpp59
-rw-r--r--src/mongo/db/db.cpp4
-rw-r--r--src/mongo/db/diag_log.cpp109
-rw-r--r--src/mongo/db/diag_log.h65
-rw-r--r--src/mongo/db/mongod_options.cpp16
-rw-r--r--src/mongo/db/service_entry_point_mongod.cpp21
-rw-r--r--src/mongo/db/storage/mmap_v1/SConscript1
-rw-r--r--src/mongo/db/storage/mmap_v1/data_file_sync.cpp2
18 files changed, 0 insertions, 596 deletions
diff --git a/debian/mongod.1 b/debian/mongod.1
index b775b7004d5..7982e554870 100644
--- a/debian/mongod.1
+++ b/debian/mongod.1
@@ -232,92 +232,6 @@ _
.UNINDENT
.INDENT 0.0
.TP
-.B \-\-diaglog <value>
-\fIDefault\fP: 0
-.sp
-Deprecated since version 2.6.
-
-.sp
-\fI\%\-\-diaglog\fP is for internal use and not intended for most users.
-.sp
-Creates a very verbose \fIdiagnostic log\fP for troubleshooting and
-recording various errors. MongoDB writes these log files in the
-\fBdbPath\fP directory in a series of files that begin with the
-string \fBdiaglog\fP and end with the initiation time of the logging as a
-hex string.
-.sp
-The specified value configures the level of verbosity:
-.TS
-center;
-|l|l|.
-_
-T{
-Value
-T} T{
-Setting
-T}
-_
-T{
-0
-T} T{
-Off. No logging.
-T}
-_
-T{
-1
-T} T{
-Log write operations.
-T}
-_
-T{
-2
-T} T{
-Log read operations.
-T}
-_
-T{
-3
-T} T{
-Log both read and write operations.
-T}
-_
-T{
-7
-T} T{
-Log write and some read operations.
-T}
-_
-.TE
-.sp
-You can use the \fBmongosniff\fP tool to replay this output for
-investigation. Given a typical diaglog file located at
-\fB/data/db/diaglog.4f76a58c\fP, you might use a command in the following
-form to read these files:
-.INDENT 7.0
-.INDENT 3.5
-.sp
-.nf
-.ft C
-mongosniff \-\-source DIAGLOG /data/db/diaglog.4f76a58c
-.ft P
-.fi
-.UNINDENT
-.UNINDENT
-.sp
-\fBWARNING:\fP
-.INDENT 7.0
-.INDENT 3.5
-Setting the diagnostic level to \fB0\fP will cause \fBmongod\fP
-to stop writing data to the \fIdiagnostic log\fP file. However,
-the \fBmongod\fP instance will continue to keep the file open,
-even if it is no longer writing data to the file. If you want to
-rename, move, or delete the diagnostic log you must cleanly shut
-down the \fBmongod\fP instance before doing so.
-.UNINDENT
-.UNINDENT
-.UNINDENT
-.INDENT 0.0
-.TP
.B \-\-traceExceptions
For internal diagnostic use only.
.UNINDENT
diff --git a/debian/mongosniff.1 b/debian/mongosniff.1
deleted file mode 100644
index 600a792c3df..00000000000
--- a/debian/mongosniff.1
+++ /dev/null
@@ -1,200 +0,0 @@
-.\" Man page generated from reStructuredText.
-.
-.TH "MONGOSNIFF" "1" "January 30, 2015" "3.0" "mongodb-manual"
-.SH NAME
-mongosniff \- MongoDB Protocol Introspection Utility
-.
-.nr rst2man-indent-level 0
-.
-.de1 rstReportMargin
-\\$1 \\n[an-margin]
-level \\n[rst2man-indent-level]
-level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
--
-\\n[rst2man-indent0]
-\\n[rst2man-indent1]
-\\n[rst2man-indent2]
-..
-.de1 INDENT
-.\" .rstReportMargin pre:
-. RS \\$1
-. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
-. nr rst2man-indent-level +1
-.\" .rstReportMargin post:
-..
-.de UNINDENT
-. RE
-.\" indent \\n[an-margin]
-.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
-.nr rst2man-indent-level -1
-.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
-.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
-..
-.SH SYNOPSIS
-.sp
-\fBmongosniff\fP provides a low\-level operation tracing/sniffing view
-into database activity in real time. Think of \fBmongosniff\fP as a
-MongoDB\-specific analogue of \fBtcpdump\fP for TCP/IP network
-traffic. Typically, \fBmongosniff\fP is most frequently used in driver
-development.
-.sp
-\fBNOTE:\fP
-.INDENT 0.0
-.INDENT 3.5
-\fBmongosniff\fP requires \fBlibpcap\fP and is only available for
-Unix\-like systems.
-.UNINDENT
-.UNINDENT
-.sp
-As an alternative to \fBmongosniff\fP, Wireshark, a popular
-network sniffing tool is capable of inspecting and parsing the MongoDB
-wire protocol.
-.SH OPTIONS
-.INDENT 0.0
-.TP
-.B mongosniff
-.UNINDENT
-.INDENT 0.0
-.TP
-.B mongosniff
-.UNINDENT
-.INDENT 0.0
-.TP
-.B \-\-help
-Returns information on the options and use of \fBmongosniff\fP\&.
-.UNINDENT
-.INDENT 0.0
-.TP
-.B \-\-forward <host><:port>
-Declares a host to forward all parsed requests that the
-\fBmongosniff\fP intercepts to another \fBmongod\fP instance
-and issue those operations on that database instance.
-.sp
-Specify the target host name and port in the \fB<host><:port>\fP format.
-.sp
-To connect to a replica set, specify the \fBreplica set name\fP and a seed list of set members. Use the
-following form:
-.INDENT 7.0
-.INDENT 3.5
-.sp
-.nf
-.ft C
-<replSetName>/<hostname1><:port>,<hostname2><:port>,<...>
-.ft P
-.fi
-.UNINDENT
-.UNINDENT
-.UNINDENT
-.INDENT 0.0
-.TP
-.B \-\-source <NET [interface]>
-Specifies source material to inspect. Use \fB\-\-source NET [interface]\fP
-to inspect traffic from a network interface (e.g. \fBeth0\fP or \fBlo\fP\&.)
-Use \fB\-\-source FILE [filename]\fP to read captured packets in
-\fIpcap\fP format.
-.sp
-You may use the \fB\-\-source DIAGLOG [filename]\fP option to read the
-output files produced by the \fI\-\-diaglog\fP
-option.
-.UNINDENT
-.INDENT 0.0
-.TP
-.B \-\-objcheck
-Displays invalid BSON objects only and nothing else. Use this option for
-troubleshooting driver development. This option has some performance
-impact on the performance of \fBmongosniff\fP\&.
-.UNINDENT
-.INDENT 0.0
-.TP
-.B <port>
-Specifies alternate ports to sniff for traffic. By default,
-\fBmongosniff\fP watches for MongoDB traffic on port \fB27017\fP\&. Append
-multiple port numbers to the end of \fBmongosniff\fP to monitor
-traffic on multiple ports.
-.UNINDENT
-.SH USE
-.sp
-Use the following command to connect to a \fBmongod\fP or
-\fBmongos\fP running on port 27017 \fIand\fP 27018 on the localhost
-interface:
-.INDENT 0.0
-.INDENT 3.5
-.sp
-.nf
-.ft C
-mongosniff \-\-source NET lo 27017 27018
-.ft P
-.fi
-.UNINDENT
-.UNINDENT
-.sp
-Use the following command to only log invalid \fIBSON\fP objects for
-the \fBmongod\fP or \fBmongos\fP running on the localhost
-interface and port 27018, for driver development and troubleshooting:
-.INDENT 0.0
-.INDENT 3.5
-.sp
-.nf
-.ft C
-mongosniff \-\-objcheck \-\-source NET lo 27018
-.ft P
-.fi
-.UNINDENT
-.UNINDENT
-.SH BUILD MONGOSNIFF
-.sp
-To build \fBmongosniff\fP yourself, Linux users can use the following
-procedure:
-.INDENT 0.0
-.IP 1. 3
-Obtain prerequisites using your operating
-systems package management software. Dependencies include:
-.INDENT 3.0
-.IP \(bu 2
-\fBlibpcap\fP \- to capture network packets.
-.IP \(bu 2
-\fBgit\fP \- to download the MongoDB source code.
-.IP \(bu 2
-\fBscons\fP and a C++ compiler \- to build \fBmongosniff\fP\&.
-.UNINDENT
-.IP 2. 3
-Download a copy of the MongoDB source code using \fBgit\fP:
-.INDENT 3.0
-.INDENT 3.5
-.sp
-.nf
-.ft C
-git clone git://github.com/mongodb/mongo.git
-.ft P
-.fi
-.UNINDENT
-.UNINDENT
-.IP 3. 3
-Issue the following sequence of commands to change to the
-\fBmongo/\fP directory and build \fBmongosniff\fP:
-.INDENT 3.0
-.INDENT 3.5
-.sp
-.nf
-.ft C
-cd mongo
-scons mongosniff
-.ft P
-.fi
-.UNINDENT
-.UNINDENT
-.UNINDENT
-.sp
-\fBNOTE:\fP
-.INDENT 0.0
-.INDENT 3.5
-If you run \fBscons mongosniff\fP before installing \fBlibpcap\fP you
-must run \fBscons clean\fP before you can build \fBmongosniff\fP\&.
-.UNINDENT
-.UNINDENT
-.SH AUTHOR
-MongoDB Documentation Project
-.SH COPYRIGHT
-2011-2015
-.\" Generated by docutils manpage writer.
-.
diff --git a/jstests/auth/lib/commands_lib.js b/jstests/auth/lib/commands_lib.js
index 077ed4fe388..90b8d1051f8 100644
--- a/jstests/auth/lib/commands_lib.js
+++ b/jstests/auth/lib/commands_lib.js
@@ -2246,20 +2246,6 @@ var authCommandsLib = {
]
},
{
- testname: "diagLogging",
- command: {diagLogging: 1},
- skipSharded: true,
- testcases: [
- {
- runOnDb: adminDbName,
- roles: roles_hostManager,
- privileges: [{resource: {cluster: true}, actions: ["diagLogging"]}]
- },
- {runOnDb: firstDbName, roles: {}},
- {runOnDb: secondDbName, roles: {}}
- ]
- },
- {
testname: "distinct",
command: {distinct: "coll", key: "a", query: {}},
testcases: [
diff --git a/jstests/core/views/views_all_commands.js b/jstests/core/views/views_all_commands.js
index b56d61fe7a7..ff5842be316 100644
--- a/jstests/core/views/views_all_commands.js
+++ b/jstests/core/views/views_all_commands.js
@@ -180,7 +180,6 @@
},
dbStats: {skip: "TODO(SERVER-25948)"},
delete: {command: {delete: "view", deletes: [{q: {x: 1}, limit: 1}]}, expectFailure: true},
- diagLogging: {skip: isUnrelated},
distinct: {command: {distinct: "view", key: "_id"}},
driverOIDTest: {skip: isUnrelated},
drop: {command: {drop: "view"}},
diff --git a/jstests/sharding/safe_secondary_reads_drop_recreate.js b/jstests/sharding/safe_secondary_reads_drop_recreate.js
index 5b49fd1dc24..488906bef52 100644
--- a/jstests/sharding/safe_secondary_reads_drop_recreate.js
+++ b/jstests/sharding/safe_secondary_reads_drop_recreate.js
@@ -132,7 +132,6 @@
dbHash: {skip: "does not return user data"},
dbStats: {skip: "does not return user data"},
delete: {skip: "primary only"},
- diagLogging: {skip: "does not return user data"},
distinct: {
setUp: function(mongosConn) {
assert.writeOK(mongosConn.getCollection(nss).insert({x: 1}));
diff --git a/jstests/sharding/safe_secondary_reads_single_migration_suspend_range_deletion.js b/jstests/sharding/safe_secondary_reads_single_migration_suspend_range_deletion.js
index 44ac466c435..ccb774e5f8f 100644
--- a/jstests/sharding/safe_secondary_reads_single_migration_suspend_range_deletion.js
+++ b/jstests/sharding/safe_secondary_reads_single_migration_suspend_range_deletion.js
@@ -151,7 +151,6 @@
dbHash: {skip: "does not return user data"},
dbStats: {skip: "does not return user data"},
delete: {skip: "primary only"},
- diagLogging: {skip: "does not return user data"},
distinct: {
setUp: function(mongosConn) {
assert.writeOK(mongosConn.getCollection(nss).insert({x: 1}));
diff --git a/jstests/sharding/safe_secondary_reads_single_migration_waitForDelete.js b/jstests/sharding/safe_secondary_reads_single_migration_waitForDelete.js
index bf09aebe9f5..98713affc78 100644
--- a/jstests/sharding/safe_secondary_reads_single_migration_waitForDelete.js
+++ b/jstests/sharding/safe_secondary_reads_single_migration_waitForDelete.js
@@ -134,7 +134,6 @@
dbHash: {skip: "does not return user data"},
dbStats: {skip: "does not return user data"},
delete: {skip: "primary only"},
- diagLogging: {skip: "does not return user data"},
distinct: {
setUp: function(mongosConn) {
assert.writeOK(mongosConn.getCollection(nss).insert({x: 1}));
diff --git a/src/mongo/db/SConscript b/src/mongo/db/SConscript
index e63c3b20742..cf2b8e6cd7f 100644
--- a/src/mongo/db/SConscript
+++ b/src/mongo/db/SConscript
@@ -413,7 +413,6 @@ env.Library(
],
LIBDEPS=[
'$BUILD_DIR/mongo/db/storage/mmap_v1/mmap_v1_options',
- 'diag_log',
'repl/repl_settings',
'server_options',
'storage/storage_options',
@@ -592,7 +591,6 @@ env.Library(
'concurrency/lock_manager',
'curop',
'curop_metrics',
- 'diag_log',
'lasterror',
'ops/write_ops_parsers',
'rw_concern_d',
@@ -757,16 +755,6 @@ env.Library(
)
env.Library(
- target="diag_log",
- source=[
- "diag_log.cpp",
- ],
- LIBDEPS=[
- "storage/storage_options",
- ],
-)
-
-env.Library(
target="authz_manager_external_state_factory_d",
source=[
"authz_manager_external_state_factory_d.cpp",
@@ -818,7 +806,6 @@ env.Library(
"db_raii",
"dbdirectclient",
"dbhelpers",
- "diag_log",
"exec/exec",
"exec/working_set",
"ftdc/ftdc_mongod",
diff --git a/src/mongo/db/auth/action_types.txt b/src/mongo/db/auth/action_types.txt
index 2fdb27bbeb0..1f57ba6084b 100644
--- a/src/mongo/db/auth/action_types.txt
+++ b/src/mongo/db/auth/action_types.txt
@@ -34,7 +34,6 @@
"createUser",
"dbHash",
"dbStats",
-"diagLogging",
"dropAllRolesFromDatabase", # Not used for permissions checks, but to id the event in logs.
"dropAllUsersFromDatabase", # Not used for permissions checks, but to id the event in logs.
"dropCollection",
diff --git a/src/mongo/db/auth/role_graph_builtin_roles.cpp b/src/mongo/db/auth/role_graph_builtin_roles.cpp
index d79149c368d..47ba56ce752 100644
--- a/src/mongo/db/auth/role_graph_builtin_roles.cpp
+++ b/src/mongo/db/auth/role_graph_builtin_roles.cpp
@@ -213,7 +213,6 @@ MONGO_INITIALIZER(AuthorizationBuiltinRoles)(InitializerContext* context) {
<< ActionType::shutdown
<< ActionType::touch
<< ActionType::unlock
- << ActionType::diagLogging
<< ActionType::flushRouterConfig // clusterManager gets this also
<< ActionType::fsync
<< ActionType::invalidateUserCache // userAdminAnyDatabase gets this also
diff --git a/src/mongo/db/commands/dbcommands.cpp b/src/mongo/db/commands/dbcommands.cpp
index 791d851c376..15851760bc5 100644
--- a/src/mongo/db/commands/dbcommands.cpp
+++ b/src/mongo/db/commands/dbcommands.cpp
@@ -64,7 +64,6 @@
#include "mongo/db/db_raii.h"
#include "mongo/db/dbdirectclient.h"
#include "mongo/db/dbhelpers.h"
-#include "mongo/db/diag_log.h"
#include "mongo/db/exec/working_set_common.h"
#include "mongo/db/index/index_access_method.h"
#include "mongo/db/index/index_descriptor.h"
@@ -391,64 +390,6 @@ public:
} cmdProfile;
-class CmdDiagLogging : public BasicCommand {
-public:
- virtual bool slaveOk() const {
- return true;
- }
- CmdDiagLogging() : BasicCommand("diagLogging") {}
- bool adminOnly() const {
- return true;
- }
-
- void help(stringstream& h) const {
- h << "http://dochub.mongodb.org/core/"
- "monitoring#MonitoringandDiagnostics-DatabaseRecord%2FReplay%28diagLoggingcommand%29";
- }
-
-
- virtual bool supportsWriteConcern(const BSONObj& cmd) const override {
- return false;
- }
-
- virtual void addRequiredPrivileges(const std::string& dbname,
- const BSONObj& cmdObj,
- std::vector<Privilege>* out) {
- ActionSet actions;
- actions.addAction(ActionType::diagLogging);
- out->push_back(Privilege(ResourcePattern::forClusterResource(), actions));
- }
-
- bool run(OperationContext* opCtx,
- const string& dbname,
- const BSONObj& cmdObj,
- BSONObjBuilder& result) {
- const char* deprecationWarning =
- "CMD diagLogging is deprecated and will be removed in a future release";
- warning() << deprecationWarning << startupWarningsLog;
-
- // This doesn't look like it requires exclusive DB lock, because it uses its own diag
- // locking, but originally the lock was set to be WRITE, so preserving the behaviour.
- Lock::DBLock dbXLock(opCtx, dbname, MODE_X);
-
- // TODO (Kal): OldClientContext legacy, needs to be removed
- {
- CurOp::get(opCtx)->ensureStarted();
- stdx::lock_guard<Client> lk(*opCtx->getClient());
- CurOp::get(opCtx)->setNS_inlock(dbname);
- }
-
- int was = _diaglog.setLevel(cmdObj.firstElement().numberInt());
- _diaglog.flush();
- if (!serverGlobalParams.quiet.load()) {
- LOG(0) << "CMD: diagLogging set to " << _diaglog.getLevel() << " from: " << was;
- }
- result.append("was", was);
- result.append("note", deprecationWarning);
- return true;
- }
-} cmddiaglogging;
-
/* drop collection */
class CmdDrop : public ErrmsgCommandDeprecated {
public:
diff --git a/src/mongo/db/db.cpp b/src/mongo/db/db.cpp
index 7bef30a8593..ef1e073e1db 100644
--- a/src/mongo/db/db.cpp
+++ b/src/mongo/db/db.cpp
@@ -65,7 +65,6 @@
#include "mongo/db/dbdirectclient.h"
#include "mongo/db/dbhelpers.h"
#include "mongo/db/dbmessage.h"
-#include "mongo/db/diag_log.h"
#include "mongo/db/exec/working_set_common.h"
#include "mongo/db/ftdc/ftdc_mongod.h"
#include "mongo/db/index_names.h"
@@ -1013,9 +1012,6 @@ void shutdownTask() {
log(LogComponent::kNetwork) << "shutdown: going to close listening sockets...";
ListeningSockets::get()->closeAll();
- log(LogComponent::kNetwork) << "shutdown: going to flush diaglog...";
- _diaglog.flush();
-
if (serviceContext->getGlobalStorageEngine()) {
ServiceContext::UniqueOperationContext uniqueOpCtx;
OperationContext* opCtx = client->getOperationContext();
diff --git a/src/mongo/db/diag_log.cpp b/src/mongo/db/diag_log.cpp
deleted file mode 100644
index 9b4606d478f..00000000000
--- a/src/mongo/db/diag_log.cpp
+++ /dev/null
@@ -1,109 +0,0 @@
-/**
- * Copyright (C) 2008-2014 MongoDB Inc.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License, version 3,
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- * As a special exception, the copyright holders give permission to link the
- * code of portions of this program with the OpenSSL library under certain
- * conditions as described in each individual source file and distribute
- * linked combinations including the program with the OpenSSL library. You
- * must comply with the GNU Affero General Public License in all respects for
- * all of the code used other than as permitted herein. If you modify file(s)
- * with this exception, you may extend this exception to your version of the
- * file(s), but you are not obligated to do so. If you do not wish to do so,
- * delete this exception statement from your version. If you delete this
- * exception statement from all source files in the program, then also delete
- * it in the license file.
- */
-
-#define MONGO_LOG_DEFAULT_COMPONENT ::mongo::logger::LogComponent::kDefault;
-
-#include "mongo/platform/basic.h"
-
-#include <fstream>
-#include <iomanip>
-#include <sstream>
-
-#include "mongo/db/diag_log.h"
-
-#include "mongo/db/storage/storage_options.h"
-#include "mongo/util/assert_util.h"
-#include "mongo/util/log.h"
-
-namespace mongo {
-
-using std::hex;
-using std::ios;
-using std::ofstream;
-using std::string;
-using std::stringstream;
-
-DiagLog::DiagLog() : f(0), level(0) {}
-
-void DiagLog::openFile() {
- verify(f == 0);
- stringstream ss;
- ss << storageGlobalParams.dbpath << "/diaglog." << hex << time(0);
- string name = ss.str();
- f = new ofstream(name.c_str(), ios::out | ios::binary);
- if (!f->good()) {
- str::stream msg;
- msg << "diagLogging couldn't open " << name;
- log() << msg.ss.str();
- uasserted(ErrorCodes::FileStreamFailed, msg.ss.str());
- } else {
- log() << "diagLogging using file " << name;
- }
-}
-
-int DiagLog::setLevel(int newLevel) {
- stdx::lock_guard<stdx::mutex> lk(mutex);
- int old = level;
- log() << "diagLogging level=" << newLevel;
- if (f == 0) {
- openFile();
- }
- level = newLevel; // must be done AFTER f is set
- return old;
-}
-
-void DiagLog::flush() {
- if (level) {
- log() << "flushing diag log";
- stdx::lock_guard<stdx::mutex> lk(mutex);
- f->flush();
- }
-}
-
-void DiagLog::writeop(char* data, int len) {
- if (level & 1) {
- stdx::lock_guard<stdx::mutex> lk(mutex);
- f->write(data, len);
- }
-}
-
-void DiagLog::readop(char* data, int len) {
- if (level & 2) {
- bool log = (level & 4) == 0;
- OCCASIONALLY log = true;
- if (log) {
- stdx::lock_guard<stdx::mutex> lk(mutex);
- verify(f);
- f->write(data, len);
- }
- }
-}
-
-DiagLog _diaglog;
-
-} // namespace mongo
diff --git a/src/mongo/db/diag_log.h b/src/mongo/db/diag_log.h
deleted file mode 100644
index 739f15aec43..00000000000
--- a/src/mongo/db/diag_log.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/**
-* Copyright (C) 2008 10gen Inc.
-*
-* This program is free software: you can redistribute it and/or modify
-* it under the terms of the GNU Affero General Public License, version 3,
-* as published by the Free Software Foundation.
-*
-* This program is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-* GNU Affero General Public License for more details.
-*
-* You should have received a copy of the GNU Affero General Public License
-* along with this program. If not, see <http://www.gnu.org/licenses/>.
-*
-* As a special exception, the copyright holders give permission to link the
-* code of portions of this program with the OpenSSL library under certain
-* conditions as described in each individual source file and distribute
-* linked combinations including the program with the OpenSSL library. You
-* must comply with the GNU Affero General Public License in all respects for
-* all of the code used other than as permitted herein. If you modify file(s)
-* with this exception, you may extend this exception to your version of the
-* file(s), but you are not obligated to do so. If you do not wish to do so,
-* delete this exception statement from your version. If you delete this
-* exception statement from all source files in the program, then also delete
-* it in the license file.
-*/
-
-#pragma once
-
-#include <iosfwd>
-
-#include "mongo/stdx/mutex.h"
-
-namespace mongo {
-
-/** a high level recording of operations to the database - sometimes used for diagnostics
- and debugging.
- */
-class DiagLog {
- std::ofstream* f; // note this is never freed
- /* 0 = off; 1 = writes, 2 = reads, 3 = both
- 7 = log a few reads, and all writes.
- */
- int level;
- stdx::mutex mutex;
- void openFile();
-
-public:
- DiagLog();
- int getLevel() const {
- return level;
- }
- /**
- * @return old
- */
- int setLevel(int newLevel);
- void flush();
- void writeop(char* data, int len);
- void readop(char* data, int len);
-};
-
-extern DiagLog _diaglog;
-
-} // namespace mongo
diff --git a/src/mongo/db/mongod_options.cpp b/src/mongo/db/mongod_options.cpp
index ae7407bbd6a..7e31a8f2890 100644
--- a/src/mongo/db/mongod_options.cpp
+++ b/src/mongo/db/mongod_options.cpp
@@ -40,7 +40,6 @@
#include "mongo/bson/util/builder.h"
#include "mongo/config.h"
#include "mongo/db/db.h"
-#include "mongo/db/diag_log.h"
#include "mongo/db/repl/repl_settings.h"
#include "mongo/db/server_options.h"
#include "mongo/db/server_options_helpers.h"
@@ -133,12 +132,6 @@ Status addMongodOptions(moe::OptionSection* options) {
// Diagnostic Options
general_options
- .addOptionChaining(
- "diaglog", "diaglog", moe::Int, "DEPRECATED: 0=off 1=W 2=R 3=both 7=W+some reads")
- .hidden()
- .setSources(moe::SourceAllLegacy);
-
- general_options
.addOptionChaining("operationProfiling.slowOpThresholdMs",
"slowms",
moe::Int,
@@ -1076,15 +1069,6 @@ Status storeMongodOptions(const moe::Environment& params) {
if (params.count("storage.mmapv1.smallFiles")) {
mmapv1GlobalOptions.smallfiles = params["storage.mmapv1.smallFiles"].as<bool>();
}
- if (params.count("diaglog")) {
- warning() << "--diaglog is deprecated and will be removed in a future release"
- << startupWarningsLog;
- int x = params["diaglog"].as<int>();
- if (x < 0 || x > 7) {
- return Status(ErrorCodes::BadValue, "can't interpret --diaglog setting");
- }
- _diaglog.setLevel(x);
- }
if ((params.count("storage.journal.enabled") &&
params["storage.journal.enabled"].as<bool>() == true) &&
diff --git a/src/mongo/db/service_entry_point_mongod.cpp b/src/mongo/db/service_entry_point_mongod.cpp
index 1e24a469a1d..dfec6d0382b 100644
--- a/src/mongo/db/service_entry_point_mongod.cpp
+++ b/src/mongo/db/service_entry_point_mongod.cpp
@@ -44,7 +44,6 @@
#include "mongo/db/curop_metrics.h"
#include "mongo/db/cursor_manager.h"
#include "mongo/db/dbdirectclient.h"
-#include "mongo/db/diag_log.h"
#include "mongo/db/initialize_operation_session_info.h"
#include "mongo/db/introspect.h"
#include "mongo/db/jsobj.h"
@@ -107,18 +106,6 @@ const StringMap<int> cmdWhitelist = {{"delete", 1},
{"refreshLogicalSessionCacheNow", 1},
{"update", 1}};
-inline void opread(const Message& m) {
- if (_diaglog.getLevel() & 2) {
- _diaglog.readop(m.singleData().view2ptr(), m.header().getLen());
- }
-}
-
-inline void opwrite(const Message& m) {
- if (_diaglog.getLevel() & 1) {
- _diaglog.writeop(m.singleData().view2ptr(), m.header().getLen());
- }
-}
-
void generateLegacyQueryErrorResponse(const AssertionException* exception,
const QueryMessage& queryMessage,
CurOp* curop,
@@ -1081,17 +1068,9 @@ DbResponse ServiceEntryPointMongod::handleRequest(OperationContext* opCtx, const
if (op == dbQuery) {
if (nsString.isCommand()) {
isCommand = true;
- opwrite(m);
- } else {
- opread(m);
}
- } else if (op == dbGetMore) {
- opread(m);
} else if (op == dbCommand || op == dbMsg) {
isCommand = true;
- opwrite(m);
- } else {
- opwrite(m);
}
CurOp& currentOp = *CurOp::get(opCtx);
diff --git a/src/mongo/db/storage/mmap_v1/SConscript b/src/mongo/db/storage/mmap_v1/SConscript
index a1642bc578a..0e308816953 100644
--- a/src/mongo/db/storage/mmap_v1/SConscript
+++ b/src/mongo/db/storage/mmap_v1/SConscript
@@ -69,7 +69,6 @@ env.Library(
'$BUILD_DIR/mongo/db/commands',
'$BUILD_DIR/mongo/db/commands/server_status',
'$BUILD_DIR/mongo/db/concurrency/lock_manager',
- '$BUILD_DIR/mongo/db/diag_log',
'$BUILD_DIR/mongo/db/index_names',
'$BUILD_DIR/mongo/db/index/index_descriptor',
'$BUILD_DIR/mongo/db/storage/journal_listener',
diff --git a/src/mongo/db/storage/mmap_v1/data_file_sync.cpp b/src/mongo/db/storage/mmap_v1/data_file_sync.cpp
index ab7dca95ff9..4d895c09b20 100644
--- a/src/mongo/db/storage/mmap_v1/data_file_sync.cpp
+++ b/src/mongo/db/storage/mmap_v1/data_file_sync.cpp
@@ -34,7 +34,6 @@
#include "mongo/db/client.h"
#include "mongo/db/commands/server_status_metric.h"
-#include "mongo/db/diag_log.h"
#include "mongo/db/operation_context.h"
#include "mongo/db/service_context.h"
#include "mongo/db/storage/mmap_v1/dur_journal.h"
@@ -66,7 +65,6 @@ void DataFileSync::run() {
}
int time_flushing = 0;
while (!globalInShutdownDeprecated()) {
- _diaglog.flush();
if (storageGlobalParams.syncdelay == 0) {
// in case at some point we add an option to change at runtime
sleepsecs(5);