diff options
Diffstat (limited to 'src/mongo/db/pipeline/document_source_current_op.cpp')
| -rw-r--r-- | src/mongo/db/pipeline/document_source_current_op.cpp | 99 |
1 files changed, 38 insertions, 61 deletions
diff --git a/src/mongo/db/pipeline/document_source_current_op.cpp b/src/mongo/db/pipeline/document_source_current_op.cpp index fc5c8b32a1f..7b453935dee 100644 --- a/src/mongo/db/pipeline/document_source_current_op.cpp +++ b/src/mongo/db/pipeline/document_source_current_op.cpp @@ -27,13 +27,11 @@ * it in the license file. */ -#include "mongo/db/commands/fsync_locked.h" #include "mongo/platform/basic.h" #include "mongo/db/pipeline/document_source_current_op.h" #include "mongo/db/pipeline/lite_parsed_document_source.h" -#include "mongo/s/sharding_feature_flags_gen.h" namespace mongo { @@ -70,8 +68,8 @@ std::unique_ptr<DocumentSourceCurrentOp::LiteParsed> DocumentSourceCurrentOp::Li << typeName(spec.type())); } - auto allUsers = kDefaultUserMode; - auto localOps = kDefaultLocalOpsMode; + auto allUsers = UserMode::kExcludeOthers; + auto localOps = LocalOpsMode::kRemoteShardOps; // Check the spec for all fields named 'allUsers'. If any of them are 'true', we require // the 'inprog' privilege. This avoids the possibility that a spec with multiple @@ -113,14 +111,13 @@ const char* DocumentSourceCurrentOp::getSourceName() const { DocumentSource::GetNextResult DocumentSourceCurrentOp::doGetNext() { if (_ops.empty()) { - _ops = pExpCtx->mongoProcessInterface->getCurrentOps( - pExpCtx, - _includeIdleConnections.value_or(kDefaultConnMode), - _includeIdleSessions.value_or(kDefaultSessionMode), - _includeOpsFromAllUsers.value_or(kDefaultUserMode), - _truncateOps.value_or(kDefaultTruncationMode), - _idleCursors.value_or(kDefaultCursorMode), - _backtrace.value_or(kDefaultBacktraceMode)); + _ops = pExpCtx->mongoProcessInterface->getCurrentOps(pExpCtx, + _includeIdleConnections, + _includeIdleSessions, + _includeOpsFromAllUsers, + _truncateOps, + _idleCursors, + _backtrace); _opsIter = _ops.begin(); @@ -148,10 +145,6 @@ DocumentSource::GetNextResult DocumentSourceCurrentOp::doGetNext() { // Add the shard name to the output document. doc.addField(kShardFieldName, Value(_shardName)); - if (mongo::lockedForWriting()) { - doc.addField(StringData("fsyncLock"), Value(true)); - } - // For operations on a shard, we change the opid from the raw numeric form to // 'shardname:opid'. We also change the fieldname 'client' to 'client_s' to indicate // that the IP is that of the mongos which initiated this request. @@ -192,13 +185,13 @@ intrusive_ptr<DocumentSource> DocumentSourceCurrentOp::createFromBson( "$currentOp must be run against the 'admin' database with {aggregate: 1}", nss.db() == NamespaceString::kAdminDb && nss.isCollectionlessAggregateNS()); - boost::optional<ConnMode> includeIdleConnections; - boost::optional<SessionMode> includeIdleSessions; - boost::optional<UserMode> includeOpsFromAllUsers; - boost::optional<LocalOpsMode> showLocalOpsOnMongoS; - boost::optional<TruncationMode> truncateOps; - boost::optional<CursorMode> idleCursors; - boost::optional<BacktraceMode> backtrace; + ConnMode includeIdleConnections = ConnMode::kExcludeIdle; + SessionMode includeIdleSessions = SessionMode::kIncludeIdle; + UserMode includeOpsFromAllUsers = UserMode::kExcludeOthers; + LocalOpsMode showLocalOpsOnMongoS = LocalOpsMode::kRemoteShardOps; + TruncationMode truncateOps = TruncationMode::kNoTruncation; + CursorMode idleCursors = CursorMode::kExcludeCursors; + BacktraceMode backtrace = BacktraceMode::kExcludeBacktrace; for (auto&& elem : spec.embeddedObject()) { const auto fieldName = elem.fieldNameStringData(); @@ -279,13 +272,13 @@ intrusive_ptr<DocumentSource> DocumentSourceCurrentOp::createFromBson( intrusive_ptr<DocumentSourceCurrentOp> DocumentSourceCurrentOp::create( const boost::intrusive_ptr<ExpressionContext>& pExpCtx, - boost::optional<ConnMode> includeIdleConnections, - boost::optional<SessionMode> includeIdleSessions, - boost::optional<UserMode> includeOpsFromAllUsers, - boost::optional<LocalOpsMode> showLocalOpsOnMongoS, - boost::optional<TruncationMode> truncateOps, - boost::optional<CursorMode> idleCursors, - boost::optional<BacktraceMode> backtrace) { + ConnMode includeIdleConnections, + SessionMode includeIdleSessions, + UserMode includeOpsFromAllUsers, + LocalOpsMode showLocalOpsOnMongoS, + TruncationMode truncateOps, + CursorMode idleCursors, + BacktraceMode backtrace) { return new DocumentSourceCurrentOp(pExpCtx, includeIdleConnections, includeIdleSessions, @@ -296,38 +289,22 @@ intrusive_ptr<DocumentSourceCurrentOp> DocumentSourceCurrentOp::create( backtrace); } -Value DocumentSourceCurrentOp::serialize(const SerializationOptions& opts) const { +Value DocumentSourceCurrentOp::serialize(boost::optional<ExplainOptions::Verbosity> explain) const { return Value(Document{ {getSourceName(), - Document{ - {kIdleConnectionsFieldName, - _includeIdleConnections.has_value() - ? opts.serializeLiteral(_includeIdleConnections.value() == ConnMode::kIncludeIdle) - : Value()}, - {kIdleSessionsFieldName, - _includeIdleSessions.has_value() - ? opts.serializeLiteral(_includeIdleSessions.value() == SessionMode::kIncludeIdle) - : Value()}, - {kAllUsersFieldName, - _includeOpsFromAllUsers.has_value() - ? opts.serializeLiteral(_includeOpsFromAllUsers.value() == UserMode::kIncludeAll) - : Value()}, - {kLocalOpsFieldName, - _showLocalOpsOnMongoS.has_value() - ? opts.serializeLiteral(_showLocalOpsOnMongoS.value() == - LocalOpsMode::kLocalMongosOps) - : Value()}, - {kTruncateOpsFieldName, - _truncateOps.has_value() - ? opts.serializeLiteral(_truncateOps.value() == TruncationMode::kTruncateOps) - : Value()}, - {kIdleCursorsFieldName, - _idleCursors.has_value() - ? opts.serializeLiteral(_idleCursors.value() == CursorMode::kIncludeCursors) - : Value()}, - {kBacktraceFieldName, - _backtrace.has_value() - ? opts.serializeLiteral(_backtrace.value() == BacktraceMode::kIncludeBacktrace) - : Value()}}}}); + Document{{kIdleConnectionsFieldName, + _includeIdleConnections == ConnMode::kIncludeIdle ? Value(true) : Value()}, + {kIdleSessionsFieldName, + _includeIdleSessions == SessionMode::kExcludeIdle ? Value(false) : Value()}, + {kAllUsersFieldName, + _includeOpsFromAllUsers == UserMode::kIncludeAll ? Value(true) : Value()}, + {kLocalOpsFieldName, + _showLocalOpsOnMongoS == LocalOpsMode::kLocalMongosOps ? Value(true) : Value()}, + {kTruncateOpsFieldName, + _truncateOps == TruncationMode::kTruncateOps ? Value(true) : Value()}, + {kIdleCursorsFieldName, + _idleCursors == CursorMode::kIncludeCursors ? Value(true) : Value()}, + {kBacktraceFieldName, + _backtrace == BacktraceMode::kIncludeBacktrace ? Value(true) : Value()}}}}); } } // namespace mongo |
