SERVER-113183 Mark module boundaries for `observability` (#43349)

GitOrigin-RevId: e810af1916caaedb1cde8d1e1b74bb50b2461daf
This commit is contained in:
Saman Memaripour 2025-10-31 09:30:17 -04:00 committed by MongoDB Bot
parent 3c3218efc7
commit b593b9aece
28 changed files with 87 additions and 45 deletions

View File

@ -600,6 +600,7 @@ observability:
meta: meta:
slack: server-networking-observability slack: server-networking-observability
jira: Networking & Observability jira: Networking & Observability
fully_marked: true
files: files:
- src/mongo/db/connection_health_metrics_parameter.idl - src/mongo/db/connection_health_metrics_parameter.idl
- src/mongo/db/not_primary_error_tracker* - src/mongo/db/not_primary_error_tracker*
@ -624,6 +625,7 @@ observability.tracing:
meta: meta:
slack: server-networking-observability slack: server-networking-observability
jira: Networking & Observability jira: Networking & Observability
fully_marked: true
files: files:
- src/mongo/otel/traces/ - src/mongo/otel/traces/
- src/mongo/util/tracing_support* - src/mongo/util/tracing_support*
@ -632,6 +634,7 @@ observability.metrics:
meta: meta:
slack: server-networking-observability slack: server-networking-observability
jira: Networking & Observability jira: Networking & Observability
fully_marked: true
files: files:
- src/mongo/otel/metrics/ - src/mongo/otel/metrics/
@ -639,6 +642,7 @@ observability.ftdc:
meta: meta:
slack: server-networking-observability slack: server-networking-observability
jira: Networking & Observability jira: Networking & Observability
fully_marked: true
files: files:
- src/mongo/db/ftdc/ - src/mongo/db/ftdc/

View File

@ -31,6 +31,7 @@ global:
server_parameters: server_parameters:
enableDetailedConnectionHealthMetricLogLines: enableDetailedConnectionHealthMetricLogLines:
mod_visibility: public
description: >- description: >-
Enables detailed log lines related to connection health in a cluster. Enables detailed log lines related to connection health in a cluster.
set_at: [startup, runtime] set_at: [startup, runtime]

View File

@ -30,8 +30,9 @@
#pragma once #pragma once
#include "mongo/db/client.h" #include "mongo/db/client.h"
#include "mongo/util/modules.h"
namespace mongo { namespace MONGO_MOD_PUBLIC mongo {
class BSONObjBuilder; class BSONObjBuilder;
static const char kUpsertedFieldName[] = "upserted"; static const char kUpsertedFieldName[] = "upserted";
@ -91,4 +92,4 @@ private:
bool _hadError = false; bool _hadError = false;
}; };
} // namespace mongo } // namespace MONGO_MOD_PUBLIC mongo

View File

@ -31,12 +31,13 @@
#include "mongo/util/duration.h" #include "mongo/util/duration.h"
#include "mongo/util/inline_memory.h" #include "mongo/util/inline_memory.h"
#include "mongo/util/modules.h"
#include <cstddef> #include <cstddef>
#include <list> #include <list>
#include <memory> #include <memory>
namespace mongo { namespace MONGO_MOD_PUBLIC mongo {
class OperationContext; class OperationContext;
@ -141,4 +142,4 @@ private:
Nanoseconds _elapsedAdjustment; Nanoseconds _elapsedAdjustment;
}; };
} // namespace mongo } // namespace MONGO_MOD_PUBLIC mongo

View File

@ -44,6 +44,7 @@
#include "mongo/util/duration.h" #include "mongo/util/duration.h"
#include "mongo/util/future.h" #include "mongo/util/future.h"
#include "mongo/util/future_impl.h" #include "mongo/util/future_impl.h"
#include "mongo/util/modules.h"
#include "mongo/util/time_support.h" #include "mongo/util/time_support.h"
#include <functional> #include <functional>
@ -68,7 +69,7 @@ namespace process_health {
* *
* If an active fault state persists, FaultManager will terminate the server process. * If an active fault state persists, FaultManager will terminate the server process.
*/ */
class FaultManager : protected StateMachine<HealthCheckStatus, FaultState> { class MONGO_MOD_PUBLIC FaultManager : protected StateMachine<HealthCheckStatus, FaultState> {
FaultManager(const FaultManager&) = delete; FaultManager(const FaultManager&) = delete;
FaultManager& operator=(const FaultManager&) = delete; FaultManager& operator=(const FaultManager&) = delete;

View File

@ -36,6 +36,7 @@
#include "mongo/stdx/mutex.h" #include "mongo/stdx/mutex.h"
#include "mongo/stdx/unordered_map.h" #include "mongo/stdx/unordered_map.h"
#include "mongo/util/duration.h" #include "mongo/util/duration.h"
#include "mongo/util/modules.h"
#include "mongo/util/synchronized_value.h" #include "mongo/util/synchronized_value.h"
#include <algorithm> #include <algorithm>
@ -75,7 +76,15 @@ std::ostream& operator<<(std::ostream& os, const FaultState& state);
/** /**
* Types of health observers available. * Types of health observers available.
*/ */
enum class FaultFacetType { kSystem, kMock1, kMock2, kTestObserver, kLdap, kDns, kConfigServer }; enum class MONGO_MOD_PUBLIC FaultFacetType {
kSystem,
kMock1,
kMock2,
kTestObserver,
kLdap,
kDns,
kConfigServer
};
static const StringData FaultFacetTypeStrings[] = { static const StringData FaultFacetTypeStrings[] = {
"systemObserver", "mock1", "mock2", "testObserver", "LDAP", "DNS", "configServer"}; "systemObserver", "mock1", "mock2", "testObserver", "LDAP", "DNS", "configServer"};
@ -97,7 +106,7 @@ inline std::ostream& operator<<(std::ostream& os, const FaultFacetType& type) {
return os; return os;
} }
class FaultManagerConfig { class MONGO_MOD_PUBLIC FaultManagerConfig {
public: public:
/* Maximum possible jitter added to the time between health checks */ /* Maximum possible jitter added to the time between health checks */
static auto inline constexpr kPeriodicHealthCheckMaxJitter{Milliseconds{100}}; static auto inline constexpr kPeriodicHealthCheckMaxJitter{Milliseconds{100}};

View File

@ -40,6 +40,7 @@
#include "mongo/transport/transport_layer_manager_impl.h" #include "mongo/transport/transport_layer_manager_impl.h"
#include "mongo/unittest/unittest.h" #include "mongo/unittest/unittest.h"
#include "mongo/util/concurrency/thread_pool.h" #include "mongo/util/concurrency/thread_pool.h"
#include "mongo/util/modules.h"
#include "mongo/util/tick_source_mock.h" #include "mongo/util/tick_source_mock.h"
#include <memory> #include <memory>
@ -65,7 +66,7 @@ inline std::unique_ptr<FaultManagerConfig> getConfigWithDisabledPeriodicChecks()
* Test wrapper class for FaultManager that has access to protected methods * Test wrapper class for FaultManager that has access to protected methods
* for testing. * for testing.
*/ */
class FaultManagerTestImpl : public FaultManager { class MONGO_MOD_NEEDS_REPLACEMENT FaultManagerTestImpl : public FaultManager {
public: public:
FaultManagerTestImpl(ServiceContext* svcCtx, FaultManagerTestImpl(ServiceContext* svcCtx,
std::shared_ptr<executor::TaskExecutor> taskExecutor, std::shared_ptr<executor::TaskExecutor> taskExecutor,
@ -122,9 +123,9 @@ public:
/** /**
* Test suite for fault manager. * Test suite for fault manager.
*/ */
class FaultManagerTest : service_context_test::WithSetupTransportLayer, class MONGO_MOD_PUBLIC FaultManagerTest : service_context_test::WithSetupTransportLayer,
service_context_test::RouterRoleOverride, service_context_test::RouterRoleOverride,
public ClockSourceMockServiceContextTest { public ClockSourceMockServiceContextTest {
public: public:
void setUp() override { void setUp() override {
HealthObserverRegistration::resetObserverFactoriesForTest(); HealthObserverRegistration::resetObserverFactoriesForTest();

View File

@ -31,6 +31,7 @@
#include "mongo/base/string_data.h" #include "mongo/base/string_data.h"
#include "mongo/bson/bsonobjbuilder.h" #include "mongo/bson/bsonobjbuilder.h"
#include "mongo/db/process_health/fault_manager_config.h" #include "mongo/db/process_health/fault_manager_config.h"
#include "mongo/util/modules.h"
#include <memory> #include <memory>
#include <ostream> #include <ostream>
@ -38,7 +39,7 @@
namespace mongo { namespace mongo {
namespace process_health { namespace process_health {
enum class Severity { kOk, kFailure }; enum class MONGO_MOD_PUBLIC Severity { kOk, kFailure };
static const StringData SeverityStrings[] = {"kOk", "kFailure"}; static const StringData SeverityStrings[] = {"kOk", "kFailure"};
inline StringBuilder& operator<<(StringBuilder& s, const Severity& sev) { inline StringBuilder& operator<<(StringBuilder& s, const Severity& sev) {
@ -51,7 +52,7 @@ inline std::ostream& operator<<(std::ostream& s, const Severity& sev) {
/** /**
* Immutable class representing current status of an ongoing fault tracked by facet. * Immutable class representing current status of an ongoing fault tracked by facet.
*/ */
class HealthCheckStatus { class MONGO_MOD_PUBLIC HealthCheckStatus {
public: public:
HealthCheckStatus(FaultFacetType type, Severity severity, StringData description) HealthCheckStatus(FaultFacetType type, Severity severity, StringData description)
: _type(type), _severity(severity), _description(description) {} : _type(type), _severity(severity), _description(description) {}

View File

@ -37,6 +37,7 @@
#include "mongo/util/cancellation.h" #include "mongo/util/cancellation.h"
#include "mongo/util/duration.h" #include "mongo/util/duration.h"
#include "mongo/util/future.h" #include "mongo/util/future.h"
#include "mongo/util/modules.h"
#include "mongo/util/time_support.h" #include "mongo/util/time_support.h"
#include <memory> #include <memory>
@ -75,7 +76,7 @@ struct HealthObserverLivenessStats {
/** /**
* Interface to conduct periodic health checks. * Interface to conduct periodic health checks.
*/ */
class HealthObserver { class MONGO_MOD_PUBLIC HealthObserver {
public: public:
virtual ~HealthObserver() = default; virtual ~HealthObserver() = default;

View File

@ -43,6 +43,7 @@
#include "mongo/util/duration.h" #include "mongo/util/duration.h"
#include "mongo/util/future.h" #include "mongo/util/future.h"
#include "mongo/util/hierarchical_acquisition.h" #include "mongo/util/hierarchical_acquisition.h"
#include "mongo/util/modules.h"
#include "mongo/util/tick_source.h" #include "mongo/util/tick_source.h"
#include "mongo/util/time_support.h" #include "mongo/util/time_support.h"
@ -59,7 +60,7 @@ namespace process_health {
* Every instance of health observer is wired internally to update the state of the FaultManager * Every instance of health observer is wired internally to update the state of the FaultManager
* when a problem is detected. * when a problem is detected.
*/ */
class HealthObserverBase : public HealthObserver { class MONGO_MOD_OPEN HealthObserverBase : public HealthObserver {
public: public:
explicit HealthObserverBase(ServiceContext* svcCtx); explicit HealthObserverBase(ServiceContext* svcCtx);
~HealthObserverBase() override = default; ~HealthObserverBase() override = default;

View File

@ -30,6 +30,7 @@
#include "mongo/db/process_health/health_observer.h" #include "mongo/db/process_health/health_observer.h"
#include "mongo/db/service_context.h" #include "mongo/db/service_context.h"
#include "mongo/util/modules.h"
#include <functional> #include <functional>
#include <memory> #include <memory>
@ -42,7 +43,7 @@ namespace process_health {
* Registration mechanism for all health observers. * Registration mechanism for all health observers.
* This is static class not requiring an instance to work. * This is static class not requiring an instance to work.
*/ */
class HealthObserverRegistration { class MONGO_MOD_PUBLIC HealthObserverRegistration {
public: public:
/** /**
* Registers a factory method, which will be invoked later to instantiate the observer. * Registers a factory method, which will be invoked later to instantiate the observer.

View File

@ -35,6 +35,7 @@
#include "mongo/logv2/log.h" #include "mongo/logv2/log.h"
#include "mongo/util/assert_util.h" #include "mongo/util/assert_util.h"
#include "mongo/util/duration.h" #include "mongo/util/duration.h"
#include "mongo/util/modules.h"
#include "mongo/util/timer.h" #include "mongo/util/timer.h"
#include <array> #include <array>
@ -114,7 +115,7 @@ private:
* - nonstatic makeTimer to initialize Timer. * - nonstatic makeTimer to initialize Timer.
*/ */
template <typename Policy> template <typename Policy>
class SplitTimer { class MONGO_MOD_PUBLIC SplitTimer {
private: private:
template <typename E> template <typename E>
static constexpr size_t _idx(E e) { static constexpr size_t _idx(E e) {

View File

@ -31,6 +31,7 @@
#include "mongo/base/status.h" #include "mongo/base/status.h"
#include "mongo/config.h" #include "mongo/config.h"
#include "mongo/util/modules.h"
#include <string> #include <string>
@ -38,11 +39,11 @@ namespace mongo::otel::metrics {
/** /**
* Initializes OpenTelemetry metrics using either the HTTP or file exporter. * Initializes OpenTelemetry metrics using either the HTTP or file exporter.
*/ */
Status initialize(const std::string& name); MONGO_MOD_PUBLIC Status initialize(const std::string& name);
/** /**
* Shuts down the OpenTelemetry metric export process by setting the global MeterProvider to a * Shuts down the OpenTelemetry metric export process by setting the global MeterProvider to a
* NoopMeterProvider. * NoopMeterProvider.
*/ */
void shutdown(); MONGO_MOD_PUBLIC void shutdown();
} // namespace mongo::otel::metrics } // namespace mongo::otel::metrics

View File

@ -32,6 +32,7 @@
#include "mongo/db/client.h" #include "mongo/db/client.h"
#include "mongo/db/operation_context.h" #include "mongo/db/operation_context.h"
#include "mongo/otel/telemetry_context.h" #include "mongo/otel/telemetry_context.h"
#include "mongo/util/modules.h"
#include <memory> #include <memory>
@ -44,7 +45,7 @@ namespace otel {
* propagate parent / child relationships between Spans as well as hold metadata to correlate * propagate parent / child relationships between Spans as well as hold metadata to correlate
* various telemetry data. * various telemetry data.
*/ */
class TelemetryContextHolder { class MONGO_MOD_PUBLIC TelemetryContextHolder {
public: public:
static TelemetryContextHolder& get(OperationContext* opCtx); static TelemetryContextHolder& get(OperationContext* opCtx);

View File

@ -32,14 +32,14 @@
#include "mongo/bson/bsonobj.h" #include "mongo/bson/bsonobj.h"
#include "mongo/db/operation_context.h" #include "mongo/db/operation_context.h"
#include "mongo/otel/telemetry_context.h" #include "mongo/otel/telemetry_context.h"
#include "mongo/util/modules.h"
#ifdef MONGO_CONFIG_OTEL #ifdef MONGO_CONFIG_OTEL
#include <opentelemetry/context/propagation/text_map_propagator.h> #include <opentelemetry/context/propagation/text_map_propagator.h>
#endif #endif
namespace mongo { namespace mongo {
namespace otel { namespace MONGO_MOD_PUBLIC otel {
#ifdef MONGO_CONFIG_OTEL #ifdef MONGO_CONFIG_OTEL
@ -80,5 +80,5 @@ public:
#endif #endif
} // namespace otel } // namespace MONGO_MOD_PUBLIC otel
} // namespace mongo } // namespace mongo

View File

@ -31,6 +31,7 @@
#include "mongo/bson/bsonobj.h" #include "mongo/bson/bsonobj.h"
#include "mongo/otel/traces/tracing_utils.h" #include "mongo/otel/traces/tracing_utils.h"
#include "mongo/util/modules.h"
#include <opentelemetry/context/propagation/text_map_propagator.h> #include <opentelemetry/context/propagation/text_map_propagator.h>
@ -45,7 +46,7 @@ using opentelemetry::nostd::function_ref;
* providing interoperability between BSONObj and OpenTelemetry TextMap Propagators * providing interoperability between BSONObj and OpenTelemetry TextMap Propagators
* (https://opentelemetry.io/docs/specs/otel/context/api-propagators/#textmap-propagator). * (https://opentelemetry.io/docs/specs/otel/context/api-propagators/#textmap-propagator).
*/ */
class BSONTextMapCarrier : public TextMapCarrier { class MONGO_MOD_PARENT_PRIVATE BSONTextMapCarrier : public TextMapCarrier {
public: public:
/** /**
* Default constructor with an empty initial BSONObj. Intended to be used when using a * Default constructor with an empty initial BSONObj. Intended to be used when using a

View File

@ -32,6 +32,7 @@
#include "mongo/db/service_context_test_fixture.h" #include "mongo/db/service_context_test_fixture.h"
#include "mongo/otel/traces/mock_exporter.h" #include "mongo/otel/traces/mock_exporter.h"
#include "mongo/otel/traces/tracer_provider_service.h" #include "mongo/otel/traces/tracer_provider_service.h"
#include "mongo/util/modules.h"
#include <opentelemetry/sdk/trace/simple_processor_factory.h> #include <opentelemetry/sdk/trace/simple_processor_factory.h>
#include <opentelemetry/sdk/trace/tracer_provider_factory.h> #include <opentelemetry/sdk/trace/tracer_provider_factory.h>
@ -45,7 +46,7 @@ namespace traces {
* Test fixture for tests that require OpenTelemetry TracerProvider to be initialized. * Test fixture for tests that require OpenTelemetry TracerProvider to be initialized.
* Sets up a TracerProvider with MockExporter so tests can create and inspect spans. * Sets up a TracerProvider with MockExporter so tests can create and inspect spans.
*/ */
class OtelTestFixture : public ServiceContextTest { class MONGO_MOD_OPEN OtelTestFixture : public ServiceContextTest {
public: public:
void setUp() override { void setUp() override {
ServiceContextTest::setUp(); ServiceContextTest::setUp();

View File

@ -33,12 +33,13 @@
#include "mongo/config.h" #include "mongo/config.h"
#include "mongo/db/operation_context.h" #include "mongo/db/operation_context.h"
#include "mongo/otel/telemetry_context.h" #include "mongo/otel/telemetry_context.h"
#include "mongo/util/modules.h"
#include <memory> #include <memory>
namespace mongo { namespace mongo {
namespace otel { namespace otel {
namespace traces { namespace MONGO_MOD_PUBLIC traces {
#ifdef MONGO_CONFIG_OTEL #ifdef MONGO_CONFIG_OTEL
@ -141,6 +142,6 @@ public:
#endif #endif
} // namespace traces } // namespace MONGO_MOD_PUBLIC traces
} // namespace otel } // namespace otel
} // namespace mongo } // namespace mongo

View File

@ -31,6 +31,7 @@
#include "mongo/base/string_data.h" #include "mongo/base/string_data.h"
#include "mongo/otel/telemetry_context.h" #include "mongo/otel/telemetry_context.h"
#include "mongo/util/modules.h"
#include <opentelemetry/context/propagation/text_map_propagator.h> #include <opentelemetry/context/propagation/text_map_propagator.h>
#include <opentelemetry/trace/context.h> #include <opentelemetry/trace/context.h>
@ -53,7 +54,7 @@ constexpr OtelStringView falseValue = "false";
* SpanTelemetryContextImpl is an implementation of TelemetryContext that wraps OpenTelemetry's * SpanTelemetryContextImpl is an implementation of TelemetryContext that wraps OpenTelemetry's
* Context to allow for propagation of span state across OpenTelemetry functionality. * Context to allow for propagation of span state across OpenTelemetry functionality.
*/ */
class SpanTelemetryContextImpl : public TelemetryContext { class MONGO_MOD_NEEDS_REPLACEMENT SpanTelemetryContextImpl : public TelemetryContext {
public: public:
explicit SpanTelemetryContextImpl(OtelContext ctx); explicit SpanTelemetryContextImpl(OtelContext ctx);
SpanTelemetryContextImpl() : _ctx() {} SpanTelemetryContextImpl() : _ctx() {}

View File

@ -32,10 +32,12 @@
#include "mongo/base/status.h" #include "mongo/base/status.h"
#include "mongo/config.h" #include "mongo/config.h"
#include "mongo/db/service_context.h" #include "mongo/db/service_context.h"
#include "mongo/util/modules.h"
#include <string> #include <string>
namespace mongo::otel::traces { namespace mongo::otel {
namespace MONGO_MOD_PUBLIC traces {
#ifdef MONGO_CONFIG_OTEL #ifdef MONGO_CONFIG_OTEL
@ -52,4 +54,5 @@ inline void shutdown(ServiceContext* serviceContext) {}
#endif #endif
} // namespace mongo::otel::traces } // namespace MONGO_MOD_PUBLIC traces
} // namespace mongo::otel

View File

@ -30,9 +30,11 @@
#pragma once #pragma once
#include "mongo/db/operation_context.h" #include "mongo/db/operation_context.h"
#include "mongo/rpc/metadata/metadata_hook.h"
#include "mongo/util/modules.h"
namespace mongo::otel::traces { namespace mongo::otel::traces {
bool isTracingEnabled(OperationContext* opCtx); MONGO_MOD_PUBLIC bool isTracingEnabled(OperationContext* opCtx);
} }

View File

@ -34,6 +34,7 @@ imports:
feature_flags: feature_flags:
featureFlagTracing: featureFlagTracing:
mod_visibility: public
description: "Feature flag for enabling the creation of tracing spans in the server code." description: "Feature flag for enabling the creation of tracing spans in the server code."
cpp_varname: gFeatureFlagTracing cpp_varname: gFeatureFlagTracing
default: false default: false

View File

@ -32,6 +32,7 @@
#include "mongo/platform/atomic.h" #include "mongo/platform/atomic.h"
#include "mongo/platform/compiler.h" #include "mongo/platform/compiler.h"
#include "mongo/stdx/mutex.h" #include "mongo/stdx/mutex.h"
#include "mongo/util/modules.h"
#include "mongo/util/scopeguard.h" #include "mongo/util/scopeguard.h"
#include <cstdint> #include <cstdint>
@ -42,7 +43,7 @@
#include <boost/optional.hpp> #include <boost/optional.hpp>
namespace mongo { namespace MONGO_MOD_PUBLIC mongo {
namespace observable_mutex_details { namespace observable_mutex_details {
template <typename MutexType> template <typename MutexType>
@ -215,13 +216,13 @@ public:
_mutex.unlock_shared(); _mutex.unlock_shared();
} }
void setExclusiveAcquisitions_forTest(MutexAcquisitionStats stat) { MONGO_MOD_NEEDS_REPLACEMENT void setExclusiveAcquisitions_forTest(MutexAcquisitionStats stat) {
_exclusiveAcquisitions.contentions.store(stat.contentions); _exclusiveAcquisitions.contentions.store(stat.contentions);
_exclusiveAcquisitions.total.store(stat.total); _exclusiveAcquisitions.total.store(stat.total);
_exclusiveAcquisitions.waitCycles.store(stat.waitCycles); _exclusiveAcquisitions.waitCycles.store(stat.waitCycles);
} }
void setSharedAcquisitions_forTest(MutexAcquisitionStats stat) { MONGO_MOD_NEEDS_REPLACEMENT void setSharedAcquisitions_forTest(MutexAcquisitionStats stat) {
_sharedAcquisitions.contentions.store(stat.contentions); _sharedAcquisitions.contentions.store(stat.contentions);
_sharedAcquisitions.total.store(stat.total); _sharedAcquisitions.total.store(stat.total);
_sharedAcquisitions.waitCycles.store(stat.waitCycles); _sharedAcquisitions.waitCycles.store(stat.waitCycles);
@ -265,4 +266,4 @@ using ObservableMutex = MutexType;
using ObservableExclusiveMutex = ObservableMutex<stdx::mutex>; using ObservableExclusiveMutex = ObservableMutex<stdx::mutex>;
using ObservableSharedMutex = ObservableMutex<std::shared_mutex>; // NOLINT using ObservableSharedMutex = ObservableMutex<std::shared_mutex>; // NOLINT
} // namespace mongo } // namespace MONGO_MOD_PUBLIC mongo

View File

@ -31,6 +31,7 @@
#include "mongo/base/string_data.h" #include "mongo/base/string_data.h"
#include "mongo/bson/bsonobj.h" #include "mongo/bson/bsonobj.h"
#include "mongo/util/modules.h"
#include "mongo/util/observable_mutex.h" #include "mongo/util/observable_mutex.h"
#include "mongo/util/string_map.h" #include "mongo/util/string_map.h"
#include "mongo/util/system_clock_source.h" #include "mongo/util/system_clock_source.h"
@ -42,7 +43,7 @@ namespace mongo {
* The registry keeps track of all registered instances of `ObservableMutex` and provides an * The registry keeps track of all registered instances of `ObservableMutex` and provides an
* interface to collect contention stats. * interface to collect contention stats.
*/ */
class ObservableMutexRegistry { class MONGO_MOD_PUBLIC ObservableMutexRegistry {
public: public:
static constexpr auto kTotalAcquisitionsFieldName = "total"_sd; static constexpr auto kTotalAcquisitionsFieldName = "total"_sd;
static constexpr auto kTotalContentionsFieldName = "contentions"_sd; static constexpr auto kTotalContentionsFieldName = "contentions"_sd;

View File

@ -36,6 +36,7 @@
#include "mongo/stdx/mutex.h" #include "mongo/stdx/mutex.h"
#include "mongo/stdx/thread.h" #include "mongo/stdx/thread.h"
#include "mongo/util/duration.h" #include "mongo/util/duration.h"
#include "mongo/util/modules.h"
#include <cstdint> #include <cstdint>
#include <functional> #include <functional>
@ -45,7 +46,7 @@
#include <boost/filesystem/path.hpp> #include <boost/filesystem/path.hpp>
namespace mongo { namespace MONGO_MOD_PUBLIC mongo {
class OperationContext; class OperationContext;
class ServiceContext; class ServiceContext;
@ -117,7 +118,7 @@ private:
* - sleep(period) * - sleep(period)
* - callback * - callback
*/ */
class WatchdogPeriodicThread { class MONGO_MOD_OPEN WatchdogPeriodicThread {
public: public:
WatchdogPeriodicThread(Milliseconds period, StringData threadName); WatchdogPeriodicThread(Milliseconds period, StringData threadName);
virtual ~WatchdogPeriodicThread() = default; virtual ~WatchdogPeriodicThread() = default;
@ -346,7 +347,7 @@ public:
/** /**
* Gets whether checks are paused or not. For testing purposes only. * Gets whether checks are paused or not. For testing purposes only.
*/ */
virtual bool getShouldRunChecks_forTest() = 0; MONGO_MOD_PUBLIC virtual bool getShouldRunChecks_forTest() = 0;
}; };
@ -445,4 +446,4 @@ private:
WatchdogMonitorThread _watchdogMonitorThread; WatchdogMonitorThread _watchdogMonitorThread;
}; };
} // namespace mongo } // namespace MONGO_MOD_PUBLIC mongo

View File

@ -28,7 +28,9 @@
*/ */
#pragma once #pragma once
#include "mongo/platform/atomic_word.h" #include "mongo/platform/atomic_word.h"
#include "mongo/util/modules.h"
#include "mongo/watchdog/watchdog.h" #include "mongo/watchdog/watchdog.h"
namespace mongo { namespace mongo {
@ -37,7 +39,7 @@ namespace mongo {
* A mock WatchdogMonitor for use in C++ unit tests. * A mock WatchdogMonitor for use in C++ unit tests.
* *
*/ */
class WatchdogMonitorMock final : public WatchdogMonitorInterface { class MONGO_MOD_PUBLIC WatchdogMonitorMock final : public WatchdogMonitorInterface {
public: public:
WatchdogMonitorMock() = default; WatchdogMonitorMock() = default;
~WatchdogMonitorMock() override = default; ~WatchdogMonitorMock() override = default;

View File

@ -31,11 +31,12 @@
#include "mongo/base/status.h" #include "mongo/base/status.h"
#include "mongo/db/tenant_id.h" #include "mongo/db/tenant_id.h"
#include "mongo/util/modules.h"
#include <boost/optional.hpp> #include <boost/optional.hpp>
#include <boost/optional/optional.hpp> #include <boost/optional/optional.hpp>
namespace mongo { namespace MONGO_MOD_PUBLIC mongo {
class ServiceContext; class ServiceContext;
@ -50,4 +51,4 @@ void startWatchdog(ServiceContext* service);
Status validateWatchdogPeriodSeconds(const int& value, const boost::optional<TenantId>&); Status validateWatchdogPeriodSeconds(const int& value, const boost::optional<TenantId>&);
Status onUpdateWatchdogPeriodSeconds(const int& value); Status onUpdateWatchdogPeriodSeconds(const int& value);
} // namespace mongo } // namespace MONGO_MOD_PUBLIC mongo

View File

@ -30,11 +30,12 @@
#pragma once #pragma once
#include "mongo/base/string_data.h" #include "mongo/base/string_data.h"
#include "mongo/util/modules.h"
#include <string> #include <string>
#include <vector> #include <vector>
namespace mongo { namespace MONGO_MOD_PUBLIC mongo {
/** /**
* Allow components a way to tell the watchdog what to watch. * Allow components a way to tell the watchdog what to watch.
@ -46,4 +47,4 @@ void registerWatchdogPath(StringData path);
*/ */
std::vector<std::string>& getWatchdogPaths(); std::vector<std::string>& getWatchdogPaths();
} // namespace mongo } // namespace MONGO_MOD_PUBLIC mongo