summaryrefslogtreecommitdiff
path: root/src/mongo/db/pipeline/document_source_current_op.cpp
diff options
context:
space:
mode:
authorLucas de Castro Borges <lucas@gnuabordo.com.br>2025-02-11 15:07:35 -0300
committerLucas de Castro Borges <lucas@gnuabordo.com.br>2025-02-11 15:07:35 -0300
commit4cb8841196d0625dfa3825aa326f071cd27c7b8b (patch)
tree1682a647d4463397c119183369ae6f750d5fdcff /src/mongo/db/pipeline/document_source_current_op.cpp
parentaa03c6362cbaa767638e6eed9b031d86dd2643d1 (diff)
parent8f0827553e09872941945a093b647a4211a9db7f (diff)
Update upstream source from tag 'upstream/6.0.0'master
Update to upstream version '6.0.0' with Debian dir 5604a80ec1c96ca76f25f40d78e6ef855abec322
Diffstat (limited to 'src/mongo/db/pipeline/document_source_current_op.cpp')
-rw-r--r--src/mongo/db/pipeline/document_source_current_op.cpp99
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