summaryrefslogtreecommitdiff
path: root/src/mongo/db/repl/tenant_migration_recipient_service.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/repl/tenant_migration_recipient_service.cpp')
-rw-r--r--src/mongo/db/repl/tenant_migration_recipient_service.cpp17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/mongo/db/repl/tenant_migration_recipient_service.cpp b/src/mongo/db/repl/tenant_migration_recipient_service.cpp
index 5f4e7cc0f7c..5ccd84db32d 100644
--- a/src/mongo/db/repl/tenant_migration_recipient_service.cpp
+++ b/src/mongo/db/repl/tenant_migration_recipient_service.cpp
@@ -327,6 +327,23 @@ boost::optional<BSONObj> TenantMigrationRecipientService::Instance::reportForCur
_stateDoc.getNumRestartsDueToDonorConnectionFailure());
bob.append("numRestartsDueToRecipientFailure", _stateDoc.getNumRestartsDueToRecipientFailure());
+ if (_tenantAllDatabaseCloner) {
+ auto stats = _tenantAllDatabaseCloner->getStats();
+ bob.append("approxTotalDataSize", stats.approxTotalDataSize);
+ bob.append("approxTotalBytesCopied", stats.approxTotalBytesCopied);
+
+ long long elapsedMillis = duration_cast<Milliseconds>(Date_t::now() - stats.start).count();
+ bob.append("totalReceiveElapsedMillis", elapsedMillis);
+
+ // Perform the multiplication first to avoid rounding errors, and add one to avoid division
+ // by 0.
+ long long timeRemainingMillis =
+ ((stats.approxTotalDataSize - stats.approxTotalBytesCopied) * elapsedMillis) /
+ (stats.approxTotalBytesCopied + 1);
+
+ bob.append("remainingReceiveEstimatedMillis", timeRemainingMillis);
+ }
+
if (_stateDoc.getStartFetchingDonorOpTime())
bob.append("startFetchingDonorOpTime", _stateDoc.getStartFetchingDonorOpTime()->toBSON());
if (_stateDoc.getStartApplyingDonorOpTime())