diff options
author | James Wahlin <james@mongodb.com> | 2020-09-16 14:07:21 -0400 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2020-10-22 16:13:16 +0000 |
commit | e57dbe7226c7f22c30c7c85265d0c0564dc714f1 (patch) | |
tree | 474db40d54c17d28e909719884d2b279b573775a /src/mongo/db/pipeline | |
parent | eeb4b8aaffbcbb236b2d02e35dad919b4fa0aa80 (diff) | |
download | mongo-e57dbe7226c7f22c30c7c85265d0c0564dc714f1.tar.gz |
SERVER-50547 Pipeline length limit
Diffstat (limited to 'src/mongo/db/pipeline')
-rw-r--r-- | src/mongo/db/pipeline/pipeline.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/mongo/db/pipeline/pipeline.cpp b/src/mongo/db/pipeline/pipeline.cpp index 893316623b8..c53b5358d07 100644 --- a/src/mongo/db/pipeline/pipeline.cpp +++ b/src/mongo/db/pipeline/pipeline.cpp @@ -42,6 +42,7 @@ #include "mongo/db/pipeline/document_source_merge.h" #include "mongo/db/pipeline/document_source_out.h" #include "mongo/db/pipeline/expression_context.h" +#include "mongo/db/query/query_knobs_gen.h" #include "mongo/db/storage/storage_options.h" #include "mongo/util/fail_point.h" #include "mongo/util/str.h" @@ -195,6 +196,12 @@ std::unique_ptr<Pipeline, PipelineDeleter> Pipeline::create( void Pipeline::validateCommon() const { size_t i = 0; + + uassert(ErrorCodes::FailedToParse, + str::stream() << "Pipeline length must be no longer than " + << internalPipelineLengthLimit << " stages", + static_cast<int>(_sources.size()) <= internalPipelineLengthLimit); + for (auto&& stage : _sources) { auto constraints = stage->constraints(_splitState); |