diff options
Diffstat (limited to 'src/mongo/db/s/resharding/resharding_metrics.cpp')
-rw-r--r-- | src/mongo/db/s/resharding/resharding_metrics.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/mongo/db/s/resharding/resharding_metrics.cpp b/src/mongo/db/s/resharding/resharding_metrics.cpp index c7cb0747b70..71c8542268d 100644 --- a/src/mongo/db/s/resharding/resharding_metrics.cpp +++ b/src/mongo/db/s/resharding/resharding_metrics.cpp @@ -61,6 +61,7 @@ constexpr auto kCoordinatorState = "coordinatorState"; constexpr auto kDonorState = "donorState"; constexpr auto kRecipientState = "recipientState"; constexpr auto kOpStatus = "opStatus"; +constexpr auto kLastOpEndingChunkImbalance = "lastOpEndingChunkImbalance"; using MetricsPtr = std::unique_ptr<ReshardingMetrics>; @@ -154,6 +155,8 @@ public: TimeInterval inCriticalSection; int64_t writesDuringCriticalSection = 0; + int64_t chunkImbalanceCount = 0; + boost::optional<DonorStateEnum> donorState; boost::optional<RecipientStateEnum> recipientState; boost::optional<CoordinatorStateEnum> coordinatorState; @@ -402,6 +405,15 @@ void ReshardingMetrics::setDocumentsToCopyForCurrentOp(int64_t documents, int64_ _currentOp->bytesToCopy = bytes; } +void ReshardingMetrics::setLastReshardChunkImbalanceCount(int64_t newCount) noexcept { + stdx::lock_guard<Latch> lk(_mutex); + + invariant(_currentOp, kNoOperationInProgress); + invariant(_currentOp->coordinatorState); + + _cumulativeOp->chunkImbalanceCount = newCount; +} + void ReshardingMetrics::onDocumentsCopied(int64_t documents, int64_t bytes) noexcept { stdx::lock_guard<Latch> lk(_mutex); if (!_currentOp) @@ -577,6 +589,7 @@ void ReshardingMetrics::serializeCumulativeOpMetrics(BSONObjBuilder* bob) const bob->append(kOplogsApplied, ops.oplogEntriesApplied); bob->append(kWritesDuringCritialSection, ops.writesDuringCriticalSection); bob->append(kOplogsFetched, ops.oplogEntriesFetched); + bob->append(kLastOpEndingChunkImbalance, ops.chunkImbalanceCount); } Date_t ReshardingMetrics::_now() const { |