summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBrett Nawrocki <brett.nawrocki@mongodb.com>2022-04-08 14:36:33 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2022-04-08 16:34:58 +0000
commit1adf91969ad4e216d70c42d6625c6f7096f067f7 (patch)
tree670b9e97cbedce99713cce0696302788d59388ba /src
parent9ab71f9b2fac1e384529fafaf2a819ce61834228 (diff)
downloadmongo-1adf91969ad4e216d70c42d6625c6f7096f067f7.tar.gz
Revert "SERVER-64372 Add parity $currentOp resharding donor fields"
This reverts commit ecbaddb63705f5ac10f299a539a584d24fcfa20c.
Diffstat (limited to 'src')
-rw-r--r--src/mongo/db/s/collection_sharding_runtime.cpp63
-rw-r--r--src/mongo/db/s/resharding/resharding_coordinator_service.cpp10
-rw-r--r--src/mongo/db/s/resharding/resharding_coordinator_service.h3
-rw-r--r--src/mongo/db/s/resharding/resharding_donor_service.cpp16
-rw-r--r--src/mongo/db/s/resharding/resharding_donor_service.h5
-rw-r--r--src/mongo/db/s/sharding_data_transform_instance_metrics.cpp38
-rw-r--r--src/mongo/db/s/sharding_data_transform_instance_metrics.h9
-rw-r--r--src/mongo/db/s/sharding_data_transform_instance_metrics_test.cpp44
8 files changed, 20 insertions, 168 deletions
diff --git a/src/mongo/db/s/collection_sharding_runtime.cpp b/src/mongo/db/s/collection_sharding_runtime.cpp
index e3dad0c16fb..a39d3ea92e9 100644
--- a/src/mongo/db/s/collection_sharding_runtime.cpp
+++ b/src/mongo/db/s/collection_sharding_runtime.cpp
@@ -34,10 +34,7 @@
#include "mongo/base/checked_cast.h"
#include "mongo/db/catalog_raii.h"
#include "mongo/db/global_settings.h"
-#include "mongo/db/repl/primary_only_service.h"
#include "mongo/db/s/operation_sharding_state.h"
-#include "mongo/db/s/resharding/resharding_donor_recipient_common.h"
-#include "mongo/db/s/sharding_data_transform_metrics.h"
#include "mongo/db/s/sharding_runtime_d_params_gen.h"
#include "mongo/db/s/sharding_state.h"
#include "mongo/logv2/log.h"
@@ -351,6 +348,21 @@ CollectionShardingRuntime::_getMetadataWithVersionCheckAt(
auto csrLock = CSRLock::lockShared(opCtx, this);
+ {
+ auto criticalSectionSignal = _critSec.getSignal(
+ opCtx->lockState()->isWriteLocked() ? ShardingMigrationCriticalSection::kWrite
+ : ShardingMigrationCriticalSection::kRead);
+ std::string reason = _critSec.getReason() ? _critSec.getReason()->toString() : "unknown";
+ uassert(StaleConfigInfo(_nss,
+ receivedShardVersion,
+ boost::none /* wantedVersion */,
+ ShardingState::get(opCtx)->shardId(),
+ std::move(criticalSectionSignal)),
+ str::stream() << "The critical section for " << _nss.ns()
+ << " is acquired with reason: " << reason,
+ !criticalSectionSignal);
+ }
+
auto optCurrentMetadata = _getCurrentMetadataIfKnown(atClusterTime);
uassert(StaleConfigInfo(_nss,
receivedShardVersion,
@@ -362,51 +374,6 @@ CollectionShardingRuntime::_getMetadataWithVersionCheckAt(
const auto& currentMetadata = optCurrentMetadata->get();
- {
- auto operationType = opCtx->lockState()->isWriteLocked()
- ? ShardingMigrationCriticalSection::kWrite
- : ShardingMigrationCriticalSection::kRead;
- auto criticalSectionSignal = _critSec.getSignal(operationType);
- std::string reason = _critSec.getReason() ? _critSec.getReason()->toString() : "unknown";
- if (criticalSectionSignal) {
- [&] {
- if (!ShardingDataTransformMetrics::isEnabled()) {
- return;
- }
- if (!currentMetadata.isSharded()) {
- return;
- }
- const auto& reshardingFields = currentMetadata.getReshardingFields();
- if (!reshardingFields) {
- return;
- }
- auto stateMachine = resharding::tryGetReshardingStateMachine<
- ReshardingDonorService,
- ReshardingDonorService::DonorStateMachine,
- ReshardingDonorDocument>(opCtx, reshardingFields->getReshardingUUID());
- if (!stateMachine) {
- return;
- }
- switch (operationType) {
- case ShardingMigrationCriticalSection::kWrite:
- (*stateMachine)->onWriteDuringCriticalSection();
- return;
- case ShardingMigrationCriticalSection::kRead:
- return;
- }
- MONGO_UNREACHABLE;
- }();
-
- uasserted(StaleConfigInfo(_nss,
- receivedShardVersion,
- boost::none /* wantedVersion */,
- ShardingState::get(opCtx)->shardId(),
- std::move(criticalSectionSignal)),
- str::stream() << "The critical section for " << _nss.ns()
- << " is acquired with reason: " << reason);
- }
- }
-
auto wantedShardVersion = currentMetadata.getShardVersion();
if (wantedShardVersion.isWriteCompatibleWith(receivedShardVersion) ||
diff --git a/src/mongo/db/s/resharding/resharding_coordinator_service.cpp b/src/mongo/db/s/resharding/resharding_coordinator_service.cpp
index 4b48ec91761..99f98abf0a7 100644
--- a/src/mongo/db/s/resharding/resharding_coordinator_service.cpp
+++ b/src/mongo/db/s/resharding/resharding_coordinator_service.cpp
@@ -977,10 +977,6 @@ ReshardingCoordinatorService::ReshardingCoordinator::ReshardingCoordinator(
: PrimaryOnlyService::TypedInstance<ReshardingCoordinator>(),
_id(coordinatorDoc.getReshardingUUID().toBSON()),
_coordinatorService(coordinatorService),
- _metricsNew{
- ShardingDataTransformMetrics::isEnabled()
- ? ReshardingMetricsNew::initializeFrom(coordinatorDoc, getGlobalServiceContext())
- : nullptr},
_metadata(coordinatorDoc.getCommonReshardingMetadata()),
_coordinatorDoc(coordinatorDoc),
_markKilledExecutor(std::make_shared<ThreadPool>([] {
@@ -1263,9 +1259,6 @@ ReshardingCoordinatorService::ReshardingCoordinator::_commitAndFinishReshardOper
})
.then([this, executor] { return _awaitAllParticipantShardsDone(executor); })
.then([this, executor] {
- if (ShardingDataTransformMetrics::isEnabled()) {
- _metricsNew->onCriticalSectionEnd();
- }
// Best-effort attempt to trigger a refresh on the participant shards so
// they see the collection metadata without reshardingFields and no longer
// throw ReshardCollectionInProgress. There is no guarantee this logic ever
@@ -1692,9 +1685,6 @@ ReshardingCoordinatorService::ReshardingCoordinator::_awaitAllRecipientsFinished
this->_updateCoordinatorDocStateAndCatalogEntries(CoordinatorStateEnum::kBlockingWrites,
_coordinatorDoc);
- if (ShardingDataTransformMetrics::isEnabled()) {
- _metricsNew->onCriticalSectionBegin();
- }
})
.then([this] { return _waitForMajority(_ctHolder->getAbortToken()); })
.thenRunOn(**executor)
diff --git a/src/mongo/db/s/resharding/resharding_coordinator_service.h b/src/mongo/db/s/resharding/resharding_coordinator_service.h
index 280abbac2f3..a24569ecc44 100644
--- a/src/mongo/db/s/resharding/resharding_coordinator_service.h
+++ b/src/mongo/db/s/resharding/resharding_coordinator_service.h
@@ -33,7 +33,6 @@
#include "mongo/db/repl/primary_only_service.h"
#include "mongo/db/s/resharding/coordinator_document_gen.h"
#include "mongo/db/s/resharding/resharding_coordinator_observer.h"
-#include "mongo/db/s/resharding/resharding_metrics_new.h"
#include "mongo/platform/mutex.h"
#include "mongo/s/catalog/type_chunk.h"
#include "mongo/s/catalog/type_collection.h"
@@ -507,8 +506,6 @@ private:
// The primary-only service instance corresponding to the coordinator instance. Not owned.
const ReshardingCoordinatorService* const _coordinatorService;
- std::unique_ptr<ReshardingMetricsNew> _metricsNew;
-
// The in-memory representation of the immutable portion of the document in
// config.reshardingOperations.
const CommonReshardingMetadata _metadata;
diff --git a/src/mongo/db/s/resharding/resharding_donor_service.cpp b/src/mongo/db/s/resharding/resharding_donor_service.cpp
index 2eff19e9c0f..722cd4453ce 100644
--- a/src/mongo/db/s/resharding/resharding_donor_service.cpp
+++ b/src/mongo/db/s/resharding/resharding_donor_service.cpp
@@ -204,9 +204,6 @@ ReshardingDonorService::DonorStateMachine::DonorStateMachine(
std::unique_ptr<DonorStateMachineExternalState> externalState)
: repl::PrimaryOnlyService::TypedInstance<DonorStateMachine>(),
_donorService(donorService),
- _metricsNew{ShardingDataTransformMetrics::isEnabled()
- ? ReshardingMetricsNew::initializeFrom(donorDoc, getGlobalServiceContext())
- : nullptr},
_metadata{donorDoc.getCommonReshardingMetadata()},
_recipientShardIds{donorDoc.getRecipientShards()},
_donorCtx{donorDoc.getMutableState()},
@@ -381,9 +378,6 @@ ExecutorFuture<void> ReshardingDonorService::DonorStateMachine::_finishReshardin
ShardingCatalogClient::kLocalWriteConcern);
_metrics()->leaveCriticalSection(getCurrentTime());
- if (ShardingDataTransformMetrics::isEnabled()) {
- _metricsNew->onCriticalSectionEnd();
- }
}
auto opCtx = _cancelableOpCtxFactory->makeOperationContext(&cc());
@@ -518,13 +512,6 @@ void ReshardingDonorService::DonorStateMachine::onReshardingFieldsChanges(
}
}
-void ReshardingDonorService::DonorStateMachine::onWriteDuringCriticalSection() {
- if (!ShardingDataTransformMetrics::isEnabled()) {
- return;
- }
- _metricsNew->onWriteDuringCriticalSection();
-}
-
SharedSemiFuture<void> ReshardingDonorService::DonorStateMachine::awaitCriticalSectionAcquired() {
return _critSecWasAcquired.getFuture();
}
@@ -686,9 +673,6 @@ void ReshardingDonorService::DonorStateMachine::
ShardingCatalogClient::kLocalWriteConcern);
_metrics()->enterCriticalSection(getCurrentTime());
- if (ShardingDataTransformMetrics::isEnabled()) {
- _metricsNew->onCriticalSectionBegin();
- }
}
{
diff --git a/src/mongo/db/s/resharding/resharding_donor_service.h b/src/mongo/db/s/resharding/resharding_donor_service.h
index 6b7316150f7..b50c88b6af5 100644
--- a/src/mongo/db/s/resharding/resharding_donor_service.h
+++ b/src/mongo/db/s/resharding/resharding_donor_service.h
@@ -33,7 +33,6 @@
#include "mongo/db/repl/primary_only_service.h"
#include "mongo/db/s/resharding/donor_document_gen.h"
#include "mongo/db/s/resharding/resharding_metrics.h"
-#include "mongo/db/s/resharding/resharding_metrics_new.h"
#include "mongo/s/resharding/type_collection_fields_gen.h"
namespace mongo {
@@ -102,8 +101,6 @@ public:
void onReshardingFieldsChanges(OperationContext* opCtx,
const TypeCollectionReshardingFields& reshardingFields);
- void onWriteDuringCriticalSection();
-
SharedSemiFuture<void> awaitCriticalSectionAcquired();
SharedSemiFuture<void> awaitCriticalSectionPromoted();
@@ -224,8 +221,6 @@ private:
// The primary-only service instance corresponding to the donor instance. Not owned.
const ReshardingDonorService* const _donorService;
- std::unique_ptr<ReshardingMetricsNew> _metricsNew;
-
// The in-memory representation of the immutable portion of the document in
// config.localReshardingOperations.donor.
const CommonReshardingMetadata _metadata;
diff --git a/src/mongo/db/s/sharding_data_transform_instance_metrics.cpp b/src/mongo/db/s/sharding_data_transform_instance_metrics.cpp
index 1f14094cca5..27cc2e7e238 100644
--- a/src/mongo/db/s/sharding_data_transform_instance_metrics.cpp
+++ b/src/mongo/db/s/sharding_data_transform_instance_metrics.cpp
@@ -39,10 +39,6 @@ constexpr auto TEMP_VALUE = "placeholder";
namespace mongo {
-namespace {
-constexpr auto kNoDate = Date_t::min();
-}
-
ShardingDataTransformInstanceMetrics::ShardingDataTransformInstanceMetrics(
UUID instanceId,
BSONObj originalCommand,
@@ -82,10 +78,7 @@ ShardingDataTransformInstanceMetrics::ShardingDataTransformInstanceMetrics(
_insertsApplied{0},
_updatesApplied{0},
_deletesApplied{0},
- _oplogEntriesApplied{0},
- _criticalSectionStartTime{kNoDate},
- _criticalSectionEndTime{kNoDate},
- _writesDuringCriticalSection{0} {}
+ _oplogEntriesApplied{0} {}
ShardingDataTransformInstanceMetrics::~ShardingDataTransformInstanceMetrics() {
if (_deregister) {
@@ -140,12 +133,12 @@ BSONObj ShardingDataTransformInstanceMetrics::reportForCurrentOp() const noexcep
builder.append(kCoordinatorState, getStateString());
builder.append(kApplyTimeElapsed, TEMP_VALUE);
builder.append(kCopyTimeElapsed, TEMP_VALUE);
- builder.append(kCriticalSectionTimeElapsed, getCriticalSectionElapsedTimeSecs());
+ builder.append(kCriticalSectionTimeElapsed, TEMP_VALUE);
break;
case Role::kDonor:
builder.append(kDonorState, getStateString());
- builder.append(kCriticalSectionTimeElapsed, getCriticalSectionElapsedTimeSecs());
- builder.append(kCountWritesDuringCriticalSection, _writesDuringCriticalSection.load());
+ builder.append(kCriticalSectionTimeElapsed, TEMP_VALUE);
+ builder.append(kCountWritesDuringCriticalSection, TEMP_VALUE);
builder.append(kCountReadsDuringCriticalSection, TEMP_VALUE);
break;
case Role::kRecipient:
@@ -187,32 +180,9 @@ void ShardingDataTransformInstanceMetrics::onOplogEntriesApplied(int64_t numEntr
_oplogEntriesApplied.addAndFetch(numEntries);
}
-void ShardingDataTransformInstanceMetrics::onWriteDuringCriticalSection() {
- _writesDuringCriticalSection.addAndFetch(1);
-}
-
-void ShardingDataTransformInstanceMetrics::onCriticalSectionBegin() {
- _criticalSectionStartTime.store(_clockSource->now());
-}
-
-void ShardingDataTransformInstanceMetrics::onCriticalSectionEnd() {
- _criticalSectionEndTime.store(_clockSource->now());
-}
inline int64_t ShardingDataTransformInstanceMetrics::getOperationRunningTimeSecs() const {
return durationCount<Seconds>(_clockSource->now() - _startTime);
}
-int64_t ShardingDataTransformInstanceMetrics::getCriticalSectionElapsedTimeSecs() const {
- auto start = _criticalSectionStartTime.load();
- if (start == kNoDate) {
- return 0;
- }
- auto end = _criticalSectionEndTime.load();
- if (end == kNoDate) {
- end = _clockSource->now();
- }
- return durationCount<Seconds>(end - start);
-}
-
} // namespace mongo
diff --git a/src/mongo/db/s/sharding_data_transform_instance_metrics.h b/src/mongo/db/s/sharding_data_transform_instance_metrics.h
index 77fd973458e..189f7819036 100644
--- a/src/mongo/db/s/sharding_data_transform_instance_metrics.h
+++ b/src/mongo/db/s/sharding_data_transform_instance_metrics.h
@@ -68,9 +68,6 @@ public:
void onUpdateApplied();
void onDeleteApplied();
void onOplogEntriesApplied(int64_t numEntries);
- void onWriteDuringCriticalSection();
- void onCriticalSectionBegin();
- void onCriticalSectionEnd();
Role getRole() const;
protected:
@@ -112,7 +109,6 @@ protected:
private:
inline int64_t getOperationRunningTimeSecs() const;
- int64_t getCriticalSectionElapsedTimeSecs() const;
ClockSource* _clockSource;
ObserverPtr _observer;
@@ -120,15 +116,10 @@ private:
ShardingDataTransformCumulativeMetrics::DeregistrationFunction _deregister;
const Date_t _startTime;
-
AtomicWord<int64_t> _insertsApplied;
AtomicWord<int64_t> _updatesApplied;
AtomicWord<int64_t> _deletesApplied;
AtomicWord<int64_t> _oplogEntriesApplied;
-
- AtomicWord<Date_t> _criticalSectionStartTime;
- AtomicWord<Date_t> _criticalSectionEndTime;
- AtomicWord<int64_t> _writesDuringCriticalSection;
};
} // namespace mongo
diff --git a/src/mongo/db/s/sharding_data_transform_instance_metrics_test.cpp b/src/mongo/db/s/sharding_data_transform_instance_metrics_test.cpp
index 0ffa17ea88e..6c6a2b0c3d2 100644
--- a/src/mongo/db/s/sharding_data_transform_instance_metrics_test.cpp
+++ b/src/mongo/db/s/sharding_data_transform_instance_metrics_test.cpp
@@ -178,6 +178,7 @@ TEST_F(ShardingDataTransformInstanceMetricsTest, OnDeleteAppliedShouldIncrementD
ASSERT_EQ(report.getIntField("deletesApplied"), 1);
}
+
TEST_F(ShardingDataTransformInstanceMetricsTest,
OnOplogsEntriesAppliedShouldIncrementOplogsEntriesApplied) {
auto metrics = createInstanceMetrics(UUID::gen(), Role::kRecipient);
@@ -190,49 +191,6 @@ TEST_F(ShardingDataTransformInstanceMetricsTest,
ASSERT_EQ(report.getIntField("oplogEntriesApplied"), 100);
}
-TEST_F(ShardingDataTransformInstanceMetricsTest, DonorIncrementWritesDuringCriticalSection) {
- auto metrics = createInstanceMetrics(UUID::gen(), Role::kDonor);
-
- auto report = metrics->reportForCurrentOp();
- ASSERT_EQ(report.getIntField("countWritesDuringCriticalSection"), 0);
- metrics->onWriteDuringCriticalSection();
-
- report = metrics->reportForCurrentOp();
- ASSERT_EQ(report.getIntField("countWritesDuringCriticalSection"), 1);
-}
-
-TEST_F(ShardingDataTransformInstanceMetricsTest, CurrentOpReportsCriticalSectionTime) {
- const auto roles = {Role::kDonor, Role::kCoordinator};
- for (const auto& role : roles) {
- LOGV2(6437200, "CurrentOpReportsCriticalSectionTime", "Role"_attr = role);
- constexpr auto kFiveSeconds = Milliseconds(5000);
- auto uuid = UUID::gen();
- const auto& clock = getClockSource();
- auto metrics = std::make_unique<ShardingDataTransformInstanceMetrics>(
- uuid, kTestCommand, kTestNamespace, role, clock->now(), clock, &_cumulativeMetrics);
-
- // Reports 0 before critical section entered.
- clock->advance(kFiveSeconds);
- auto report = metrics->reportForCurrentOp();
- ASSERT_EQ(report.getIntField("totalCriticalSectionTimeElapsedSecs"), 0);
-
- // Reports time so far during critical section.
- metrics->onCriticalSectionBegin();
- clock->advance(kFiveSeconds);
- report = metrics->reportForCurrentOp();
- ASSERT_EQ(report.getIntField("totalCriticalSectionTimeElapsedSecs"), 5);
- clock->advance(kFiveSeconds);
- report = metrics->reportForCurrentOp();
- ASSERT_EQ(report.getIntField("totalCriticalSectionTimeElapsedSecs"), 10);
-
- // Still reports total time after critical section ends.
- metrics->onCriticalSectionEnd();
- clock->advance(kFiveSeconds);
- report = metrics->reportForCurrentOp();
- ASSERT_EQ(report.getIntField("totalCriticalSectionTimeElapsedSecs"), 10);
- }
-}
-
TEST_F(ShardingDataTransformInstanceMetricsTest, CurrentOpReportsRunningTime) {
auto uuid = UUID::gen();
auto now = getClockSource()->now();