diff options
author | Will Buerger <will.buerger@mongodb.com> | 2023-05-16 20:32:42 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2023-05-17 00:09:49 +0000 |
commit | d646e44b7801a3e5b3230bbae7dcfe05a5ed8707 (patch) | |
tree | 2eebf945a3f958e3adddc157523a49deb72cc63d /src/mongo/db/pipeline | |
parent | 8219766da20351edcda5fe21a18da254b382cd35 (diff) | |
download | mongo-d646e44b7801a3e5b3230bbae7dcfe05a5ed8707.tar.gz |
SERVER-76427: Rename $telemetry to $queryStats
Co-authored-by: Ted Tuckman <ted.tuckman@mongodb.com>
Diffstat (limited to 'src/mongo/db/pipeline')
-rw-r--r-- | src/mongo/db/pipeline/SConscript | 4 | ||||
-rw-r--r-- | src/mongo/db/pipeline/abt/document_source_visitor.cpp | 2 | ||||
-rw-r--r-- | src/mongo/db/pipeline/aggregate_command.idl | 6 | ||||
-rw-r--r-- | src/mongo/db/pipeline/aggregate_request_shapifier.cpp | 12 | ||||
-rw-r--r-- | src/mongo/db/pipeline/aggregate_request_shapifier.h | 11 | ||||
-rw-r--r-- | src/mongo/db/pipeline/document_source_query_stats.cpp (renamed from src/mongo/db/pipeline/document_source_telemetry.cpp) | 56 | ||||
-rw-r--r-- | src/mongo/db/pipeline/document_source_query_stats.h (renamed from src/mongo/db/pipeline/document_source_telemetry.h) | 24 | ||||
-rw-r--r-- | src/mongo/db/pipeline/document_source_query_stats_test.cpp (renamed from src/mongo/db/pipeline/document_source_telemetry_test.cpp) | 42 | ||||
-rw-r--r-- | src/mongo/db/pipeline/visitors/document_source_visitor_registry_mongod.h | 4 |
9 files changed, 81 insertions, 80 deletions
diff --git a/src/mongo/db/pipeline/SConscript b/src/mongo/db/pipeline/SConscript index 72a1ab942b4..eacb62bb6ea 100644 --- a/src/mongo/db/pipeline/SConscript +++ b/src/mongo/db/pipeline/SConscript @@ -328,7 +328,7 @@ pipelineEnv.Library( 'document_source_sort_by_count.cpp', 'document_source_streaming_group.cpp', 'document_source_tee_consumer.cpp', - 'document_source_telemetry.cpp', + 'document_source_query_stats.cpp', 'document_source_union_with.cpp', 'document_source_unwind.cpp', 'group_from_first_document_transformation.cpp', @@ -634,7 +634,7 @@ env.CppUnitTest( 'document_source_skip_test.cpp', 'document_source_sort_by_count_test.cpp', 'document_source_sort_test.cpp', - 'document_source_telemetry_test.cpp', + 'document_source_query_stats_test.cpp', 'document_source_union_with_test.cpp', 'document_source_internal_compute_geo_near_distance_test.cpp', 'document_source_internal_convert_bucket_index_stats_test.cpp', diff --git a/src/mongo/db/pipeline/abt/document_source_visitor.cpp b/src/mongo/db/pipeline/abt/document_source_visitor.cpp index 2170ab14407..9b7b27d3af0 100644 --- a/src/mongo/db/pipeline/abt/document_source_visitor.cpp +++ b/src/mongo/db/pipeline/abt/document_source_visitor.cpp @@ -58,6 +58,7 @@ #include "mongo/db/pipeline/document_source_operation_metrics.h" #include "mongo/db/pipeline/document_source_out.h" #include "mongo/db/pipeline/document_source_plan_cache_stats.h" +#include "mongo/db/pipeline/document_source_query_stats.h" #include "mongo/db/pipeline/document_source_queue.h" #include "mongo/db/pipeline/document_source_redact.h" #include "mongo/db/pipeline/document_source_sample.h" @@ -67,7 +68,6 @@ #include "mongo/db/pipeline/document_source_skip.h" #include "mongo/db/pipeline/document_source_sort.h" #include "mongo/db/pipeline/document_source_tee_consumer.h" -#include "mongo/db/pipeline/document_source_telemetry.h" #include "mongo/db/pipeline/document_source_union_with.h" #include "mongo/db/pipeline/document_source_unwind.h" #include "mongo/db/pipeline/visitors/document_source_visitor_registry_mongod.h" diff --git a/src/mongo/db/pipeline/aggregate_command.idl b/src/mongo/db/pipeline/aggregate_command.idl index b53ea540f8e..476fc8dbb9d 100644 --- a/src/mongo/db/pipeline/aggregate_command.idl +++ b/src/mongo/db/pipeline/aggregate_command.idl @@ -96,10 +96,10 @@ commands: - privilege: # $planCacheStats resource_pattern: exact_namespace action_type: planCacheRead - - privilege: # $telemetry - agg_stage: telemetry + - privilege: # $queryStats + agg_stage: queryStats resource_pattern: cluster - action_type: telemetryRead + action_type: queryStatsRead - privilege: # $changeStream resource_pattern: exact_namespace action_type: changeStream diff --git a/src/mongo/db/pipeline/aggregate_request_shapifier.cpp b/src/mongo/db/pipeline/aggregate_request_shapifier.cpp index 40ed6c2ce79..485b97e2c22 100644 --- a/src/mongo/db/pipeline/aggregate_request_shapifier.cpp +++ b/src/mongo/db/pipeline/aggregate_request_shapifier.cpp @@ -31,20 +31,20 @@ #include "mongo/db/query/query_shape.h" -namespace mongo::telemetry { +namespace mongo::query_stats { -BSONObj AggregateRequestShapifier::makeTelemetryKey(const SerializationOptions& opts, - OperationContext* opCtx) const { +BSONObj AggregateRequestShapifier::makeQueryStatsKey(const SerializationOptions& opts, + OperationContext* opCtx) const { // TODO SERVER-76087 We will likely want to set a flag here to stop $search from calling out // to mongot. auto expCtx = make_intrusive<ExpressionContext>(opCtx, nullptr, _request.getNamespace()); expCtx->variables.setDefaultRuntimeConstants(opCtx); expCtx->maxFeatureCompatibilityVersion = boost::none; // Ensure all features are allowed. expCtx->stopExpressionCounters(); - return makeTelemetryKey(opts, expCtx); + return makeQueryStatsKey(opts, expCtx); } -BSONObj AggregateRequestShapifier::makeTelemetryKey( +BSONObj AggregateRequestShapifier::makeQueryStatsKey( const SerializationOptions& opts, const boost::intrusive_ptr<ExpressionContext>& expCtx) const { BSONObjBuilder bob; @@ -84,4 +84,4 @@ BSONObj AggregateRequestShapifier::makeTelemetryKey( return bob.obj(); } -} // namespace mongo::telemetry +} // namespace mongo::query_stats diff --git a/src/mongo/db/pipeline/aggregate_request_shapifier.h b/src/mongo/db/pipeline/aggregate_request_shapifier.h index 3a0c41f8dd9..d78dae31be7 100644 --- a/src/mongo/db/pipeline/aggregate_request_shapifier.h +++ b/src/mongo/db/pipeline/aggregate_request_shapifier.h @@ -33,7 +33,7 @@ #include "mongo/db/pipeline/pipeline.h" #include "mongo/db/query/request_shapifier.h" -namespace mongo::telemetry { +namespace mongo::query_stats { /** * Handles shapification for AggregateCommandRequests. Requires a pre-parsed pipeline in order to @@ -50,13 +50,14 @@ public: virtual ~AggregateRequestShapifier() = default; - BSONObj makeTelemetryKey(const SerializationOptions& opts, OperationContext* opCtx) const final; + BSONObj makeQueryStatsKey(const SerializationOptions& opts, + OperationContext* opCtx) const final; - BSONObj makeTelemetryKey(const SerializationOptions& opts, - const boost::intrusive_ptr<ExpressionContext>& expCtx) const final; + BSONObj makeQueryStatsKey(const SerializationOptions& opts, + const boost::intrusive_ptr<ExpressionContext>& expCtx) const final; private: const AggregateCommandRequest& _request; const Pipeline& _pipeline; }; -} // namespace mongo::telemetry +} // namespace mongo::query_stats diff --git a/src/mongo/db/pipeline/document_source_telemetry.cpp b/src/mongo/db/pipeline/document_source_query_stats.cpp index b037515796f..48f14e0ade6 100644 --- a/src/mongo/db/pipeline/document_source_telemetry.cpp +++ b/src/mongo/db/pipeline/document_source_query_stats.cpp @@ -27,7 +27,7 @@ * it in the license file. */ -#include "mongo/db/pipeline/document_source_telemetry.h" +#include "mongo/db/pipeline/document_source_query_stats.h" #include "mongo/bson/bsontypes.h" #include "mongo/bson/timestamp.h" @@ -38,14 +38,14 @@ namespace mongo { namespace { -CounterMetric telemetryHmacApplicationErrors("telemetry.numHmacApplicationErrors"); +CounterMetric queryStatsHmacApplicationErrors("queryStats.numHmacApplicationErrors"); } -REGISTER_DOCUMENT_SOURCE_WITH_FEATURE_FLAG(telemetry, - DocumentSourceTelemetry::LiteParsed::parse, - DocumentSourceTelemetry::createFromBson, +REGISTER_DOCUMENT_SOURCE_WITH_FEATURE_FLAG(queryStats, + DocumentSourceQueryStats::LiteParsed::parse, + DocumentSourceQueryStats::createFromBson, AllowedWithApiStrict::kNeverInVersion1, - feature_flags::gFeatureFlagTelemetry); + feature_flags::gFeatureFlagQueryStats); namespace { /** @@ -55,7 +55,7 @@ boost::optional<bool> parseApplyHmacToIdentifiers(const BSONElement& el) { if (el.fieldNameStringData() == "applyHmacToIdentifiers"_sd) { auto type = el.type(); uassert(ErrorCodes::FailedToParse, - str::stream() << DocumentSourceTelemetry::kStageName + str::stream() << DocumentSourceQueryStats::kStageName << " applyHmacToIdentifiers parameter must be boolean. Found type: " << typeName(type), type == BSONType::Bool); @@ -74,14 +74,14 @@ boost::optional<std::string> parseHmacKey(const BSONElement& el) { int len; auto data = el.binData(len); uassert(ErrorCodes::FailedToParse, - str::stream() << DocumentSourceTelemetry::kStageName + str::stream() << DocumentSourceQueryStats::kStageName << "hmacKey must be greater than or equal to 32 bytes", len >= 32); return {{data, (size_t)len}}; } uasserted(ErrorCodes::FailedToParse, str::stream() - << DocumentSourceTelemetry::kStageName + << DocumentSourceQueryStats::kStageName << " hmacKey parameter must be bindata of length 32 or greater. Found type: " << typeName(type)); } @@ -95,7 +95,7 @@ boost::optional<std::string> parseHmacKey(const BSONElement& el) { template <typename Ctor> auto parseSpec(const BSONElement& spec, const Ctor& ctor) { uassert(ErrorCodes::FailedToParse, - str::stream() << DocumentSourceTelemetry::kStageName + str::stream() << DocumentSourceQueryStats::kStageName << " value must be an object. Found: " << typeName(spec.type()), spec.type() == BSONType::Object); @@ -110,7 +110,7 @@ auto parseSpec(const BSONElement& spec, const Ctor& ctor) { } else { uasserted(ErrorCodes::FailedToParse, str::stream() - << DocumentSourceTelemetry::kStageName + << DocumentSourceQueryStats::kStageName << " parameters object may only contain 'applyHmacToIdentifiers' or " "'hmacKey' options. Found: " << el.fieldName()); @@ -122,34 +122,34 @@ auto parseSpec(const BSONElement& spec, const Ctor& ctor) { } // namespace -std::unique_ptr<DocumentSourceTelemetry::LiteParsed> DocumentSourceTelemetry::LiteParsed::parse( +std::unique_ptr<DocumentSourceQueryStats::LiteParsed> DocumentSourceQueryStats::LiteParsed::parse( const NamespaceString& nss, const BSONElement& spec) { return parseSpec(spec, [&](bool applyHmacToIdentifiers, std::string hmacKey) { - return std::make_unique<DocumentSourceTelemetry::LiteParsed>( + return std::make_unique<DocumentSourceQueryStats::LiteParsed>( spec.fieldName(), applyHmacToIdentifiers, hmacKey); }); } -boost::intrusive_ptr<DocumentSource> DocumentSourceTelemetry::createFromBson( +boost::intrusive_ptr<DocumentSource> DocumentSourceQueryStats::createFromBson( BSONElement spec, const boost::intrusive_ptr<ExpressionContext>& pExpCtx) { const NamespaceString& nss = pExpCtx->ns; uassert(ErrorCodes::InvalidNamespace, - "$telemetry must be run against the 'admin' database with {aggregate: 1}", + "$queryStats must be run against the 'admin' database with {aggregate: 1}", nss.db() == DatabaseName::kAdmin.db() && nss.isCollectionlessAggregateNS()); return parseSpec(spec, [&](bool applyHmacToIdentifiers, std::string hmacKey) { - return new DocumentSourceTelemetry(pExpCtx, applyHmacToIdentifiers, hmacKey); + return new DocumentSourceQueryStats(pExpCtx, applyHmacToIdentifiers, hmacKey); }); } -Value DocumentSourceTelemetry::serialize(SerializationOptions opts) const { +Value DocumentSourceQueryStats::serialize(SerializationOptions opts) const { // This document source never contains any user information, so no need for any work when // applying hmac. return Value{Document{{kStageName, Document{}}}}; } -DocumentSource::GetNextResult DocumentSourceTelemetry::doGetNext() { +DocumentSource::GetNextResult DocumentSourceQueryStats::doGetNext() { /** * We maintain nested iterators: * - Outer one over the set of partitions. @@ -158,7 +158,7 @@ DocumentSource::GetNextResult DocumentSourceTelemetry::doGetNext() { * When an inner iterator is present and contains more elements, we can return the next element. * When the inner iterator is exhausted, we move to the next element in the outer iterator and * create a new inner iterator. When the outer iterator is exhausted, we have finished iterating - * over the telemetry store entries. + * over the queryStats store entries. * * The inner iterator iterates over a materialized container of all entries in the partition. * This is done to reduce the time under which the partition lock is held. @@ -172,17 +172,17 @@ DocumentSource::GetNextResult DocumentSourceTelemetry::doGetNext() { return {std::move(doc)}; } - TelemetryStore& _telemetryStore = getTelemetryStore(getContext()->opCtx); + QueryStatsStore& _queryStatsStore = getQueryStatsStore(getContext()->opCtx); // Materialized partition is exhausted, move to the next. _currentPartition++; - if (_currentPartition >= _telemetryStore.numPartitions()) { + if (_currentPartition >= _queryStatsStore.numPartitions()) { return DocumentSource::GetNextResult::makeEOF(); } // We only keep the partition (which holds a lock) for the time needed to materialize it to // a set of Document instances. - auto&& partition = _telemetryStore.getPartition(_currentPartition); + auto&& partition = _queryStatsStore.getPartition(_currentPartition); // Capture the time at which reading the partition begins to indicate to the caller // when the snapshot began. @@ -190,22 +190,22 @@ DocumentSource::GetNextResult DocumentSourceTelemetry::doGetNext() { Timestamp{Timestamp(Date_t::now().toMillisSinceEpoch() / 1000, 0)}; for (auto&& [key, metrics] : *partition) { try { - auto telemetryKey = - metrics->computeTelemetryKey(pExpCtx->opCtx, _applyHmacToIdentifiers, _hmacKey); - _materializedPartition.push_back({{"key", std::move(telemetryKey)}, + auto queryStatsKey = metrics->computeQueryStatsKey( + pExpCtx->opCtx, _applyHmacToIdentifiers, _hmacKey); + _materializedPartition.push_back({{"key", std::move(queryStatsKey)}, {"metrics", metrics->toBSON()}, {"asOf", partitionReadTime}}); } catch (const DBException& ex) { - telemetryHmacApplicationErrors.increment(); + queryStatsHmacApplicationErrors.increment(); LOGV2_DEBUG(7349403, 3, "Error encountered when applying hmac to query shape, will not publish " - "telemetry for this entry.", + "queryStats for this entry.", "status"_attr = ex.toStatus(), "hash"_attr = key); if (kDebugBuild) { tasserted(7349401, - "Was not able to re-parse telemetry key when reading telemetry."); + "Was not able to re-parse queryStats key when reading queryStats."); } } } diff --git a/src/mongo/db/pipeline/document_source_telemetry.h b/src/mongo/db/pipeline/document_source_query_stats.h index c71bff210ac..74d40583a6a 100644 --- a/src/mongo/db/pipeline/document_source_telemetry.h +++ b/src/mongo/db/pipeline/document_source_query_stats.h @@ -31,16 +31,16 @@ #include "mongo/db/pipeline/document_source.h" #include "mongo/db/pipeline/lite_parsed_document_source.h" -#include "mongo/db/query/telemetry.h" +#include "mongo/db/query/query_stats.h" #include "mongo/util/producer_consumer_queue.h" namespace mongo { -using namespace telemetry; +using namespace query_stats; -class DocumentSourceTelemetry final : public DocumentSource { +class DocumentSourceQueryStats final : public DocumentSource { public: - static constexpr StringData kStageName = "$telemetry"_sd; + static constexpr StringData kStageName = "$queryStats"_sd; class LiteParsed final : public LiteParsedDocumentSource { public: @@ -58,12 +58,12 @@ public: PrivilegeVector requiredPrivileges(bool isMongos, bool bypassDocumentValidation) const override { - return {Privilege(ResourcePattern::forClusterResource(), ActionType::telemetryRead)}; + return {Privilege(ResourcePattern::forClusterResource(), ActionType::queryStatsRead)}; ; } bool allowedToPassthroughFromMongos() const final { - // $telemetry must be run locally on a mongod. + // $queryStats must be run locally on a mongod. return false; } @@ -83,7 +83,7 @@ public: static boost::intrusive_ptr<DocumentSource> createFromBson( BSONElement elem, const boost::intrusive_ptr<ExpressionContext>& pExpCtx); - virtual ~DocumentSourceTelemetry() = default; + virtual ~DocumentSourceQueryStats() = default; StageConstraints constraints( Pipeline::SplitState = Pipeline::SplitState::kUnsplit) const override { @@ -114,9 +114,9 @@ public: void addVariableRefs(std::set<Variables::Id>* refs) const final {} private: - DocumentSourceTelemetry(const boost::intrusive_ptr<ExpressionContext>& expCtx, - bool applyHmacToIdentifiers = false, - std::string hmacKey = {}) + DocumentSourceQueryStats(const boost::intrusive_ptr<ExpressionContext>& expCtx, + bool applyHmacToIdentifiers = false, + std::string hmacKey = {}) : DocumentSource(kStageName, expCtx), _applyHmacToIdentifiers(applyHmacToIdentifiers), _hmacKey(hmacKey) {} @@ -130,10 +130,10 @@ private: std::deque<Document> _materializedPartition; /** - * Iterator over all telemetry partitions. This is incremented when we exhaust the current + * Iterator over all queryStats partitions. This is incremented when we exhaust the current * _materializedPartition. */ - TelemetryStore::PartitionId _currentPartition = -1; + QueryStatsStore::PartitionId _currentPartition = -1; // When true, apply hmac to field names from returned query shapes. bool _applyHmacToIdentifiers; diff --git a/src/mongo/db/pipeline/document_source_telemetry_test.cpp b/src/mongo/db/pipeline/document_source_query_stats_test.cpp index d08ce06b98c..7e29a44d591 100644 --- a/src/mongo/db/pipeline/document_source_telemetry_test.cpp +++ b/src/mongo/db/pipeline/document_source_query_stats_test.cpp @@ -32,7 +32,7 @@ #include "mongo/db/exec/document_value/document.h" #include "mongo/db/exec/document_value/document_value_test_util.h" #include "mongo/db/pipeline/aggregation_context_fixture.h" -#include "mongo/db/pipeline/document_source_telemetry.h" +#include "mongo/db/pipeline/document_source_query_stats.h" #include "mongo/unittest/unittest.h" #include "mongo/util/assert_util.h" #include "mongo/util/str.h" @@ -45,50 +45,50 @@ namespace { * {aggregate: 1} by default, so that parsing tests other than those which validate the namespace do * not need to explicitly set it. */ -class DocumentSourceTelemetryTest : public AggregationContextFixture { +class DocumentSourceQueryStatsTest : public AggregationContextFixture { public: - DocumentSourceTelemetryTest() + DocumentSourceQueryStatsTest() : AggregationContextFixture( NamespaceString::makeCollectionlessAggregateNSS(DatabaseName::kAdmin)) {} }; -TEST_F(DocumentSourceTelemetryTest, ShouldFailToParseIfSpecIsNotObject) { - ASSERT_THROWS_CODE(DocumentSourceTelemetry::createFromBson( - fromjson("{$telemetry: 1}").firstElement(), getExpCtx()), +TEST_F(DocumentSourceQueryStatsTest, ShouldFailToParseIfSpecIsNotObject) { + ASSERT_THROWS_CODE(DocumentSourceQueryStats::createFromBson( + fromjson("{$queryStats: 1}").firstElement(), getExpCtx()), AssertionException, ErrorCodes::FailedToParse); } -TEST_F(DocumentSourceTelemetryTest, ShouldFailToParseIfNotRunOnAdmin) { +TEST_F(DocumentSourceQueryStatsTest, ShouldFailToParseIfNotRunOnAdmin) { getExpCtx()->ns = NamespaceString::makeCollectionlessAggregateNSS( DatabaseName::createDatabaseName_forTest(boost::none, "foo")); - ASSERT_THROWS_CODE(DocumentSourceTelemetry::createFromBson( - fromjson("{$telemetry: {}}").firstElement(), getExpCtx()), + ASSERT_THROWS_CODE(DocumentSourceQueryStats::createFromBson( + fromjson("{$queryStats: {}}").firstElement(), getExpCtx()), AssertionException, ErrorCodes::InvalidNamespace); } -TEST_F(DocumentSourceTelemetryTest, ShouldFailToParseIfNotRunWithAggregateOne) { +TEST_F(DocumentSourceQueryStatsTest, ShouldFailToParseIfNotRunWithAggregateOne) { getExpCtx()->ns = NamespaceString::createNamespaceString_forTest("admin.foo"); - ASSERT_THROWS_CODE(DocumentSourceTelemetry::createFromBson( - fromjson("{$telemetry: {}}").firstElement(), getExpCtx()), + ASSERT_THROWS_CODE(DocumentSourceQueryStats::createFromBson( + fromjson("{$queryStats: {}}").firstElement(), getExpCtx()), AssertionException, ErrorCodes::InvalidNamespace); } -TEST_F(DocumentSourceTelemetryTest, ShouldFailToParseIfUnrecognisedParameterSpecified) { - ASSERT_THROWS_CODE(DocumentSourceTelemetry::createFromBson( - fromjson("{$telemetry: {foo: true}}").firstElement(), getExpCtx()), +TEST_F(DocumentSourceQueryStatsTest, ShouldFailToParseIfUnrecognisedParameterSpecified) { + ASSERT_THROWS_CODE(DocumentSourceQueryStats::createFromBson( + fromjson("{$queryStats: {foo: true}}").firstElement(), getExpCtx()), AssertionException, ErrorCodes::FailedToParse); } -TEST_F(DocumentSourceTelemetryTest, ParseAndSerialize) { - auto obj = fromjson("{$telemetry: {}}"); - auto doc = DocumentSourceTelemetry::createFromBson(obj.firstElement(), getExpCtx()); - auto telemetryOp = static_cast<DocumentSourceTelemetry*>(doc.get()); - auto expected = Document{{"$telemetry", Document{}}}; - ASSERT_DOCUMENT_EQ(telemetryOp->serialize().getDocument(), expected); +TEST_F(DocumentSourceQueryStatsTest, ParseAndSerialize) { + auto obj = fromjson("{$queryStats: {}}"); + auto doc = DocumentSourceQueryStats::createFromBson(obj.firstElement(), getExpCtx()); + auto queryStatsOp = static_cast<DocumentSourceQueryStats*>(doc.get()); + auto expected = Document{{"$queryStats", Document{}}}; + ASSERT_DOCUMENT_EQ(queryStatsOp->serialize().getDocument(), expected); } } // namespace diff --git a/src/mongo/db/pipeline/visitors/document_source_visitor_registry_mongod.h b/src/mongo/db/pipeline/visitors/document_source_visitor_registry_mongod.h index 24d11c814be..32ec042f6dc 100644 --- a/src/mongo/db/pipeline/visitors/document_source_visitor_registry_mongod.h +++ b/src/mongo/db/pipeline/visitors/document_source_visitor_registry_mongod.h @@ -70,6 +70,7 @@ #include "mongo/db/pipeline/document_source_operation_metrics.h" #include "mongo/db/pipeline/document_source_out.h" #include "mongo/db/pipeline/document_source_plan_cache_stats.h" +#include "mongo/db/pipeline/document_source_query_stats.h" #include "mongo/db/pipeline/document_source_queue.h" #include "mongo/db/pipeline/document_source_redact.h" #include "mongo/db/pipeline/document_source_replace_root.h" @@ -83,7 +84,6 @@ #include "mongo/db/pipeline/document_source_sort.h" #include "mongo/db/pipeline/document_source_streaming_group.h" #include "mongo/db/pipeline/document_source_tee_consumer.h" -#include "mongo/db/pipeline/document_source_telemetry.h" #include "mongo/db/pipeline/document_source_union_with.h" #include "mongo/db/pipeline/document_source_unwind.h" #include "mongo/db/pipeline/visitors/document_source_visitor_registry.h" @@ -169,7 +169,7 @@ void registerMongodVisitor(ServiceContext* service) { DocumentSourceSort, DocumentSourceStreamingGroup, DocumentSourceTeeConsumer, - DocumentSourceTelemetry, + DocumentSourceQueryStats, DocumentSourceUnionWith, DocumentSourceUnwind>(®istry); } |