SERVER-112894 Add module annotations to timeseries bucket catalog (#43106)

GitOrigin-RevId: be698d9220a84d953f578b9ea95af626929a8975
This commit is contained in:
Thomas Goyne 2025-11-03 09:03:44 -08:00 committed by MongoDB Bot
parent c4fe7575ce
commit 3361d2c31f
19 changed files with 53 additions and 71 deletions

View File

@ -754,7 +754,14 @@ networking.mongo_bridge:
files:
- src/mongo/tools/mongobridge_tool/
timeseries_bucket_catalog: # authoritative: @10gen/server-timeseries-bucket-catalog
timeseries: # authoritative: @10gen/server-collection-write-path
meta:
slack: server-storage-execution
jira: Storage Execution
files:
- src/mongo/db/timeseries # excluding ./bucket_catalog
timeseries.bucket_catalog: # authoritative: @10gen/server-timeseries-bucket-catalog
meta:
slack: server-storage-execution
jira: Storage Execution
@ -767,7 +774,6 @@ collection_write_path: # authoritative: @10gen/server-collection-write-path
jira: Storage Execution
files:
- src/mongo/db/collection_crud
- src/mongo/db/timeseries # excluding ./bucket_catalog
- src/mongo/db/commands/collection_to_capped*
bsoncolumn: # authoritative: @10gen/server-bsoncolumn

View File

@ -32,7 +32,6 @@
#include "mongo/base/string_data.h"
#include "mongo/bson/bsonobj.h"
#include "mongo/db/operation_id.h"
#include "mongo/db/repl/optime.h"
#include "mongo/db/timeseries/bucket_catalog/bucket_identifiers.h"
#include "mongo/db/timeseries/bucket_catalog/bucket_state_registry.h"
#include "mongo/db/timeseries/bucket_catalog/execution_stats.h"
@ -41,10 +40,10 @@
#include "mongo/db/timeseries/bucket_catalog/rollover.h"
#include "mongo/db/timeseries/bucket_catalog/tracking_contexts.h"
#include "mongo/db/timeseries/bucket_catalog/write_batch.h"
#include "mongo/util/modules.h"
#include "mongo/util/string_map.h"
#include "mongo/util/time_support.h"
#include "mongo/util/tracking/list.h"
#include "mongo/util/tracking/set.h"
#include <cstddef>
#include <cstdint>
@ -52,9 +51,9 @@
#include <memory>
#include <boost/container/small_vector.hpp>
#include <boost/none.hpp>
#include <boost/optional/optional.hpp>
MONGO_MOD_PUBLIC;
namespace mongo::timeseries::bucket_catalog {
/**

View File

@ -39,7 +39,6 @@
#include "mongo/db/timeseries/bucket_catalog/global_bucket_catalog.h"
#include "mongo/db/timeseries/bucket_catalog/rollover.h"
#include "mongo/db/timeseries/bucket_compression.h"
#include "mongo/db/timeseries/bucket_compression_failure.h"
#include "mongo/db/timeseries/timeseries_constants.h"
#include "mongo/util/assert_util.h"
#include "mongo/util/fail_point.h"
@ -49,10 +48,6 @@
#include <absl/container/node_hash_map.h>
#include <absl/meta/type_traits.h>
#include <boost/container/small_vector.hpp>
#include <boost/container/vector.hpp>
#include <boost/move/utility_core.hpp>
#include <boost/optional/optional.hpp>
#define MONGO_LOGV2_DEFAULT_COMPONENT ::mongo::logv2::LogComponent::kStorage
@ -175,18 +170,6 @@ BucketCatalog::BucketCatalog(size_t numberOfStripes, std::function<uint64_t()> m
});
}
BatchedInsertContext::BatchedInsertContext(
BucketKey& bucketKey,
StripeNumber stripeNumber,
const TimeseriesOptions& options,
ExecutionStatsController& stats,
std::vector<BatchedInsertTuple>& measurementsTimesAndIndices)
: key(std::move(bucketKey)),
stripeNumber(stripeNumber),
options(options),
stats(stats),
measurementsTimesAndIndices(measurementsTimesAndIndices) {};
uint64_t getMemoryUsage(const BucketCatalog& catalog) {
#ifndef MONGO_CONFIG_DEBUG_BUILD
return catalog.trackingContexts.global.allocated();

View File

@ -40,13 +40,17 @@
#include "mongo/db/timeseries/bucket_catalog/bucket_state_registry.h"
#include "mongo/db/timeseries/bucket_catalog/execution_stats.h"
#include "mongo/db/timeseries/bucket_catalog/reopening.h"
#include "mongo/db/timeseries/bucket_catalog/rollover.h"
#include "mongo/db/timeseries/bucket_catalog/tracking_contexts.h"
#include "mongo/db/timeseries/bucket_catalog/write_batch.h"
#include "mongo/db/timeseries/timeseries_gen.h"
#include "mongo/stdx/mutex.h"
#include "mongo/util/modules.h"
#include "mongo/util/tracking/btree_map.h"
#include "mongo/util/tracking/flat_hash_set.h"
#include "mongo/util/tracking/inlined_vector.h"
#include "mongo/util/tracking/list.h"
#include "mongo/util/tracking/memory.h"
#include "mongo/util/tracking/unordered_map.h"
#include "mongo/util/uuid.h"
@ -56,11 +60,9 @@
#include <memory>
#include <variant>
#include <absl/container/inlined_vector.h>
#include <boost/container/static_vector.hpp>
#include <boost/move/utility_core.hpp>
#include <boost/optional/optional.hpp>
MONGO_MOD_PUBLIC;
namespace mongo::timeseries::bucket_catalog {
using StripeNumber = std::uint8_t;
@ -92,12 +94,6 @@ struct BatchedInsertContext {
const TimeseriesOptions& options;
ExecutionStatsController stats;
std::vector<BatchedInsertTuple> measurementsTimesAndIndices;
BatchedInsertContext(BucketKey&,
StripeNumber,
const TimeseriesOptions&,
ExecutionStatsController&,
std::vector<BatchedInsertTuple>&);
};
/**

View File

@ -38,6 +38,7 @@
#include "mongo/db/storage/recovery_unit.h"
#include "mongo/db/timeseries/bucket_catalog/bucket_catalog.h"
#include "mongo/db/timeseries/bucket_catalog/flat_bson.h"
#include "mongo/util/modules.h"
#include "mongo/util/time_support.h"
#include <cstdint>
@ -47,6 +48,7 @@
#include <boost/optional/optional.hpp>
MONGO_MOD_PUBLIC;
namespace mongo::timeseries::bucket_catalog {
/**

View File

@ -36,6 +36,7 @@
#include "mongo/bson/oid.h"
#include "mongo/db/local_catalog/collection.h"
#include "mongo/db/timeseries/bucket_catalog/bucket.h"
#include "mongo/db/timeseries/bucket_catalog/bucket_catalog.h"
#include "mongo/db/timeseries/bucket_catalog/bucket_identifiers.h"
#include "mongo/db/timeseries/bucket_catalog/bucket_state_registry.h"
#include "mongo/db/timeseries/bucket_catalog/execution_stats.h"
@ -43,27 +44,18 @@
#include "mongo/db/timeseries/bucket_catalog/write_batch.h"
#include "mongo/db/timeseries/timeseries_gen.h"
#include "mongo/util/concurrency/with_lock.h"
#include "mongo/util/modules.h"
#include "mongo/util/time_support.h"
#include <cstdint>
#include <functional>
#include <memory>
#include <utility>
#include <variant>
#include <vector>
#include <boost/optional/optional.hpp>
namespace mongo::timeseries::bucket_catalog {
struct Stripe;
class BucketCatalog;
struct BatchedInsertContext;
} // namespace mongo::timeseries::bucket_catalog
namespace mongo::timeseries::bucket_catalog::internal {
using StripeNumber = std::uint8_t;
using BatchedInsertTuple = std::tuple<BSONObj, Date_t, UserBatchIndex>;
/**
* Function that should run validation against the bucket to ensure it's a proper bucket document.
* Typically, this should execute Collection::checkValidation.
@ -71,7 +63,7 @@ using BatchedInsertTuple = std::tuple<BSONObj, Date_t, UserBatchIndex>;
using BucketDocumentValidator =
std::function<std::pair<Collection::SchemaValidationResult, Status>(const BSONObj&)>;
enum class StageInsertBatchResult {
enum class MONGO_MOD_PARENT_PRIVATE StageInsertBatchResult {
Success,
RolloverNeeded,
NoMeasurementsStaged,
@ -264,6 +256,7 @@ boost::optional<OID> findArchivedCandidate(BucketCatalog& catalog,
* buckets. Returns a pair of the effective value that respects the absolute bucket max and min
* sizes and the raw value.
*/
MONGO_MOD_PARENT_PRIVATE
std::pair<int32_t, int32_t> getCacheDerivedBucketMaxSize(uint64_t storageCacheSizeBytes,
int64_t workloadCardinality);
@ -353,6 +346,7 @@ void resetBucketOIDCounter();
/**
* Allocates a new bucket and adds it to the catalog.
*/
MONGO_MOD_PARENT_PRIVATE
Bucket& allocateBucket(BucketCatalog& catalog,
Stripe& stripe,
WithLock stripeLock,
@ -367,6 +361,7 @@ Bucket& allocateBucket(BucketCatalog& catalog,
* Will also update the bucket catalog stats incNumBucketsKeptOpenDueToLargeMeasurements as
* appropriate.
*/
MONGO_MOD_PARENT_PRIVATE
RolloverReason determineRolloverReason(const BSONObj& doc,
const TimeseriesOptions& timeseriesOptions,
int64_t numberOfActiveBuckets,
@ -433,6 +428,7 @@ void closeArchivedBucket(BucketCatalog& catalog,
* inserted into the provided bucket, returns true. Otherwise, returns false.
* Also increments `currentPosition` to one past the index of the last measurement inserted.
*/
MONGO_MOD_PARENT_PRIVATE
StageInsertBatchResult stageInsertBatchIntoEligibleBucket(BucketCatalog& catalog,
OperationId opId,
const StringDataComparator* comparator,

View File

@ -31,11 +31,13 @@
#include "mongo/bson/oid.h"
#include "mongo/db/timeseries/bucket_catalog/bucket_metadata.h"
#include "mongo/util/modules.h"
#include "mongo/util/uuid.h"
#include <cstddef>
#include <cstdint>
MONGO_MOD_PUBLIC;
namespace mongo::timeseries::bucket_catalog {
/**

View File

@ -33,9 +33,6 @@
#include "mongo/bson/util/builder.h"
#include "mongo/db/timeseries/metadata.h"
#include <boost/move/utility_core.hpp>
#include <boost/optional/optional.hpp>
namespace mongo::timeseries::bucket_catalog {
BucketMetadata::BucketMetadata(tracking::Context& trackingContext,

View File

@ -32,6 +32,7 @@
#include "mongo/base/string_data.h"
#include "mongo/bson/bsonelement.h"
#include "mongo/bson/bsonobj.h"
#include "mongo/util/modules.h"
#include "mongo/util/shared_buffer.h"
#include "mongo/util/tracking/allocator.h"
#include "mongo/util/tracking/context.h"
@ -40,6 +41,7 @@
#include <absl/strings/string_view.h>
#include <boost/optional/optional.hpp>
MONGO_MOD_PUBLIC;
namespace mongo::timeseries::bucket_catalog {
struct BucketMetadata {
@ -49,7 +51,6 @@ public:
boost::optional<StringData> trueMetaFieldName);
bool operator==(const BucketMetadata& other) const;
bool operator!=(const BucketMetadata& other) const;
BSONObj toBSON() const;
BSONElement element() const;

View File

@ -33,6 +33,7 @@
#include "mongo/bson/bsonobjbuilder.h"
#include "mongo/db/timeseries/bucket_catalog/bucket_identifiers.h"
#include "mongo/stdx/mutex.h"
#include "mongo/util/modules.h"
#include "mongo/util/tracking/map.h"
#include "mongo/util/tracking/unordered_map.h"
#include "mongo/util/tracking/vector.h"
@ -42,8 +43,6 @@
#include <string>
#include <variant>
#include <boost/move/utility_core.hpp>
#include <boost/none.hpp>
#include <boost/optional/optional.hpp>
namespace mongo::timeseries::bucket_catalog {
@ -89,11 +88,11 @@ enum class BucketState : uint8_t {
// Cannot accept inserts and will continue to not accept inserts.
kFrozen,
// Cannot accept inserts, and has an outstanding prepared commit. This
// state will propogate WriteConflictExceptions to all writers aside from
// state will propagate WriteConflictExceptions to all writers aside from
// the writer who prepared the commit.
kPreparedAndCleared,
// Cannot accept inserts, and has an outstanding prepared commit. This
// state will propogate WriteConflictExceptions to all writers aside from
// state will propagate WriteConflictExceptions to all writers aside from
// the writer who prepared the commit.
kPreparedAndFrozen,
};

View File

@ -31,8 +31,10 @@
#include "mongo/bson/bsonobjbuilder.h"
#include "mongo/platform/atomic_word.h"
#include "mongo/util/modules.h"
#include "mongo/util/tracking/memory.h"
MONGO_MOD_PUBLIC;
namespace mongo::timeseries::bucket_catalog {
struct ExecutionStats {

View File

@ -32,6 +32,7 @@
#include "mongo/base/string_data.h"
#include "mongo/bson/bsonelement.h"
#include "mongo/bson/bsontypes.h"
#include "mongo/util/modules.h"
#include "mongo/util/tracking/string_map.h"
#include "mongo/util/tracking/vector.h"
@ -50,7 +51,7 @@
namespace mongo::timeseries::bucket_catalog {
/**
* Stores a BSON hierarchy in a flat contigous memory structure. Optimized for fast traversal
* Stores a BSON hierarchy in a flat contiguous memory structure. Optimized for fast traversal
* in lock-step of a BSONObj with the same internal field order. It does this at the expense of
* insert performance which should be a rare operation when adding measurements to a timeseries
* bucket. Usually we need to traverse the FlatBSONStore structure to check if we need to update any
@ -306,6 +307,7 @@ public:
/**
* Updates the stored fields provided by 'doc', ignoring the 'metaField' field.
*/
MONGO_MOD_PUBLIC
UpdateStatus update(const BSONObj& doc,
boost::optional<StringData> metaField,
const StringDataComparator* stringComparator);
@ -445,7 +447,7 @@ private:
/**
* Manages Min and Max values for timeseries measurements within a bucket.
*/
class MinMax : public FlatBSON<MinMax, MinMaxElement, BSONElementValueBuffer> {
class MONGO_MOD_PUBLIC MinMax : public FlatBSON<MinMax, MinMaxElement, BSONElementValueBuffer> {
friend class FlatBSON<MinMax, MinMaxElement, BSONElementValueBuffer>;
public:
@ -556,7 +558,7 @@ private:
/**
* Manages schema data for timeseries measurements within a bucket.
*/
class Schema : public FlatBSON<Schema, SchemaElement, BSONTypeValue> {
class MONGO_MOD_PUBLIC Schema : public FlatBSON<Schema, SchemaElement, BSONTypeValue> {
friend class FlatBSON<Schema, SchemaElement, BSONTypeValue>;
public:

View File

@ -31,7 +31,9 @@
#include "mongo/db/service_context.h"
#include "mongo/db/timeseries/bucket_catalog/bucket_catalog.h"
#include "mongo/util/modules.h"
MONGO_MOD_PUBLIC;
namespace mongo::timeseries::bucket_catalog {
/**

View File

@ -32,11 +32,13 @@
#include "mongo/base/string_data.h"
#include "mongo/bson/bsonelement.h"
#include "mongo/bson/column/bsoncolumnbuilder.h"
#include "mongo/util/modules.h"
#include "mongo/util/tracking/string_map.h"
#include <utility>
#include <vector>
MONGO_MOD_PARENT_PRIVATE;
namespace mongo::timeseries::bucket_catalog {
/**

View File

@ -33,8 +33,8 @@
#include "mongo/db/timeseries/bucket_catalog/bucket_identifiers.h"
#include "mongo/db/timeseries/bucket_catalog/execution_stats.h"
#include "mongo/util/future.h"
#include "mongo/util/modules.h"
#include <boost/none.hpp>
#include <boost/optional/optional.hpp>
namespace mongo::timeseries::bucket_catalog {

View File

@ -29,6 +29,9 @@
#pragma once
#include "mongo/util/modules.h"
MONGO_MOD_PARENT_PRIVATE;
namespace mongo::timeseries::bucket_catalog {
/**

View File

@ -29,8 +29,10 @@
#pragma once
#include "mongo/util/modules.h"
#include "mongo/util/tracking/context.h"
MONGO_MOD_PARENT_PRIVATE;
namespace mongo::timeseries::bucket_catalog {
/**

View File

@ -29,11 +29,8 @@
#pragma once
#include "mongo/base/status_with.h"
#include "mongo/bson/bsonobj.h"
#include "mongo/bson/oid.h"
#include "mongo/db/operation_id.h"
#include "mongo/db/repl/optime.h"
#include "mongo/db/session/logical_session_id.h"
#include "mongo/db/timeseries/bucket_catalog/bucket_identifiers.h"
#include "mongo/db/timeseries/bucket_catalog/execution_stats.h"
@ -41,19 +38,17 @@
#include "mongo/db/timeseries/bucket_catalog/tracking_contexts.h"
#include "mongo/util/future.h"
#include "mongo/util/future_impl.h"
#include "mongo/util/modules.h"
#include "mongo/util/string_map.h"
#include <cstddef>
#include <cstdint>
#include <boost/container/small_vector.hpp>
#include <boost/move/utility_core.hpp>
#include <boost/optional/optional.hpp>
MONGO_MOD_PUBLIC;
namespace mongo::timeseries::bucket_catalog {
struct Bucket;
using UserBatchIndex = size_t;
struct Sizes {

View File

@ -27,28 +27,21 @@
* it in the license file.
*/
#include "mongo/db/timeseries/bucket_catalog/bucket_state_registry.h"
#include "mongo/s/write_ops/batch_write_op.h"
#include <boost/move/utility_core.hpp>
#include <boost/none.hpp>
#include <boost/optional/optional.hpp>
// IWYU pragma: no_include "ext/alloc_traits.h"
#include "mongo/base/error_codes.h"
#include "mongo/base/status.h"
#include "mongo/base/string_data.h"
#include "mongo/bson/bsonmisc.h"
#include "mongo/bson/bsonobjbuilder.h"
#include "mongo/bson/oid.h"
#include "mongo/bson/timestamp.h"
#include "mongo/bson/util/builder.h"
#include "mongo/db/global_catalog/catalog_cache/catalog_cache.h"
#include "mongo/db/global_catalog/catalog_cache/catalog_cache_test_fixture.h"
#include "mongo/db/global_catalog/catalog_cache/shard_cannot_refresh_due_to_locks_held_exception.h"
#include "mongo/db/global_catalog/router_role_api/collection_routing_info_targeter.h"
#include "mongo/db/global_catalog/router_role_api/mock_ns_targeter.h"
#include "mongo/db/global_catalog/shard_key_pattern.h"
#include "mongo/db/namespace_string.h"
#include "mongo/db/query/collation/collator_interface.h"
#include "mongo/db/query/write_ops/write_ops_gen.h"
#include "mongo/db/repl/read_concern_args.h"
#include "mongo/db/repl/read_concern_level.h"
@ -62,10 +55,8 @@
#include "mongo/db/versioning_protocol/shard_version.h"
#include "mongo/db/versioning_protocol/shard_version_factory.h"
#include "mongo/db/versioning_protocol/stale_exception.h"
#include "mongo/idl/server_parameter_test_controller.h"
#include "mongo/s/session_catalog_router.h"
#include "mongo/s/transaction_router.h"
#include "mongo/s/write_ops/batch_write_op.h"
#include "mongo/s/write_ops/batched_command_request.h"
#include "mongo/unittest/unittest.h"
#include "mongo/util/fail_point.h"
@ -75,6 +66,8 @@
#include <string>
#include <utility>
#include <boost/optional/optional.hpp>
namespace mongo {
namespace {