diff options
author | Brett Nawrocki <brett.nawrocki@mongodb.com> | 2022-08-30 15:07:00 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2022-09-01 16:33:40 +0000 |
commit | 54dfa66ba84af002a0b43d2b7f49e0a8119f6c55 (patch) | |
tree | e997374e3ee6236746ee20655b88d3bcd4899c20 /src/mongo/db/s/sharding_data_transform_cumulative_metrics.cpp | |
parent | 3b8505623b8eba4880d28fb69e5bf1385af58a2b (diff) | |
download | mongo-54dfa66ba84af002a0b43d2b7f49e0a8119f6c55.tar.gz |
SERVER-68783 Disambiguate 0 time estimate from no estimate in resharding
Diffstat (limited to 'src/mongo/db/s/sharding_data_transform_cumulative_metrics.cpp')
-rw-r--r-- | src/mongo/db/s/sharding_data_transform_cumulative_metrics.cpp | 29 |
1 files changed, 23 insertions, 6 deletions
diff --git a/src/mongo/db/s/sharding_data_transform_cumulative_metrics.cpp b/src/mongo/db/s/sharding_data_transform_cumulative_metrics.cpp index e13cd3857a1..0b0665a6b02 100644 --- a/src/mongo/db/s/sharding_data_transform_cumulative_metrics.cpp +++ b/src/mongo/db/s/sharding_data_transform_cumulative_metrics.cpp @@ -42,6 +42,7 @@ constexpr auto kActive = "active"; constexpr auto kOldestActive = "oldestActive"; constexpr auto kLatencies = "latencies"; constexpr auto kCurrentInSteps = "currentInSteps"; +constexpr auto kEstimateNotAvailable = -1; struct Metrics { ReshardingCumulativeMetrics _resharding; @@ -53,7 +54,6 @@ const auto getMetrics = ServiceContext::declareDecoration<MetricsPtr>(); const auto metricsRegisterer = ServiceContext::ConstructorActionRegisterer{ "ShardingDataTransformMetrics", [](ServiceContext* ctx) { getMetrics(ctx) = std::make_unique<Metrics>(); }}; - } // namespace ShardingDataTransformCumulativeMetrics* ShardingDataTransformCumulativeMetrics::getForResharding( @@ -86,18 +86,35 @@ ShardingDataTransformCumulativeMetrics::registerInstanceMetrics(const InstanceOb int64_t ShardingDataTransformCumulativeMetrics::getOldestOperationHighEstimateRemainingTimeMillis( Role role) const { - - stdx::unique_lock guard(_mutex); - auto op = getOldestOperation(guard, role); - return op ? op->getHighEstimateRemainingTimeMillis() : 0; + return getOldestOperationEstimateRemainingTimeMillis(role, EstimateType::kHigh); } int64_t ShardingDataTransformCumulativeMetrics::getOldestOperationLowEstimateRemainingTimeMillis( Role role) const { + return getOldestOperationEstimateRemainingTimeMillis(role, EstimateType::kLow); +} + +int64_t ShardingDataTransformCumulativeMetrics::getOldestOperationEstimateRemainingTimeMillis( + Role role, EstimateType type) const { stdx::unique_lock guard(_mutex); auto op = getOldestOperation(guard, role); - return op ? op->getLowEstimateRemainingTimeMillis() : 0; + if (!op) { + return kEstimateNotAvailable; + } + auto estimate = getEstimate(op, type); + return estimate ? estimate->count() : kEstimateNotAvailable; +} + +boost::optional<Milliseconds> ShardingDataTransformCumulativeMetrics::getEstimate( + const InstanceObserver* op, EstimateType type) const { + switch (type) { + case kHigh: + return op->getHighEstimateRemainingTimeMillis(); + case kLow: + return op->getLowEstimateRemainingTimeMillis(); + } + MONGO_UNREACHABLE; } size_t ShardingDataTransformCumulativeMetrics::getObservedMetricsCount() const { |