summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMilitsa Sotirova <militsa.sotirova@mongodb.com>2023-05-04 12:56:43 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2023-05-04 13:22:34 +0000
commitb9e32aafd715da4a7b9f638b5363b3f75f79f403 (patch)
tree1ad6c208a79b719583c1e273d2f246210cdbbc02
parentced3d69805716ec47160ae74fb8b0286ff1cc39f (diff)
SERVER-66009 Avoid use of mongo process interface if search is in an update pipeliner4.4.22-rc1
-rw-r--r--src/mongo/db/ops/parsed_update.cpp3
-rw-r--r--src/mongo/db/pipeline/expression_context.h3
2 files changed, 5 insertions, 1 deletions
diff --git a/src/mongo/db/ops/parsed_update.cpp b/src/mongo/db/ops/parsed_update.cpp
index 31bfa8bbdc8..fd53932a974 100644
--- a/src/mongo/db/ops/parsed_update.cpp
+++ b/src/mongo/db/ops/parsed_update.cpp
@@ -177,11 +177,12 @@ void ParsedUpdate::parseUpdate() {
_driver.setCollator(_expCtx->getCollator());
_driver.setLogOp(true);
_driver.setFromOplogApplication(_request->isFromOplogApplication());
-
+ _expCtx->isParsingPipelineUpdate = true;
_driver.parse(_request->getUpdateModification(),
_arrayFilters,
_request->getUpdateConstants(),
_request->isMulti());
+ _expCtx->isParsingPipelineUpdate = false;
}
StatusWith<std::map<StringData, std::unique_ptr<ExpressionWithPlaceholder>>>
diff --git a/src/mongo/db/pipeline/expression_context.h b/src/mongo/db/pipeline/expression_context.h
index 232df5486a3..78b54283a86 100644
--- a/src/mongo/db/pipeline/expression_context.h
+++ b/src/mongo/db/pipeline/expression_context.h
@@ -405,6 +405,9 @@ public:
// True if this ExpressionContext is used to parse a view definition pipeline.
bool isParsingViewDefinition = false;
+ // True if this ExpressionContext is being used to parse an update pipeline.
+ bool isParsingPipelineUpdate = false;
+
// True if this ExpressionContext is used to parse a collection validator expression.
bool isParsingCollectionValidator = false;