summaryrefslogtreecommitdiff
path: root/src/mongo/db/s/sharding_ddl_coordinator.h
diff options
context:
space:
mode:
authorDavis Haupt <davis.haupt@mongodb.com>2022-06-23 14:55:08 +0000
committerDavis Haupt <davis.haupt@mongodb.com>2022-06-23 14:55:08 +0000
commit0d2029091f28a5e7e6c5fc225937dabf197cdd8b (patch)
treeb7a8866d3dfc859d0d047331e36ed61e9dcc7346 /src/mongo/db/s/sharding_ddl_coordinator.h
parent88d665074f679e024d729f8f0f62eebf2a00bab6 (diff)
parent57e39f6e07a7aee960f98c4f57c575ff6a203934 (diff)
downloadmongo-0d2029091f28a5e7e6c5fc225937dabf197cdd8b.tar.gz
Merge remote-tracking branch 'origin/master' into davish/SERVER-63099
Diffstat (limited to 'src/mongo/db/s/sharding_ddl_coordinator.h')
-rw-r--r--src/mongo/db/s/sharding_ddl_coordinator.h52
1 files changed, 50 insertions, 2 deletions
diff --git a/src/mongo/db/s/sharding_ddl_coordinator.h b/src/mongo/db/s/sharding_ddl_coordinator.h
index 11be5152036..51dcc023f60 100644
--- a/src/mongo/db/s/sharding_ddl_coordinator.h
+++ b/src/mongo/db/s/sharding_ddl_coordinator.h
@@ -174,11 +174,19 @@ private:
template <class StateDoc>
class ShardingDDLCoordinatorImpl : public ShardingDDLCoordinator {
+public:
+ boost::optional<BSONObj> reportForCurrentOp(
+ MongoProcessInterface::CurrentOpConnectionsMode connMode,
+ MongoProcessInterface::CurrentOpSessionsMode sessionMode) noexcept override {
+ return basicReportBuilder().obj();
+ }
protected:
ShardingDDLCoordinatorImpl(ShardingDDLCoordinatorService* service,
+ const std::string& name,
const BSONObj& initialStateDoc)
: ShardingDDLCoordinator(service, initialStateDoc),
+ _coordinatorName(name),
_initialState(initialStateDoc.getOwned()),
_doc(StateDoc::parse(IDLParserErrorContext("CoordinatorDocument"), _initialState)) {}
@@ -186,6 +194,34 @@ protected:
return _doc.getShardingDDLCoordinatorMetadata();
}
+
+ virtual void appendCommandInfo(BSONObjBuilder* cmdInfoBuilder) const {};
+
+ virtual BSONObjBuilder basicReportBuilder() const noexcept {
+ BSONObjBuilder bob;
+
+ // Append static info
+ bob.append("type", "op");
+ bob.append("ns", nss().toString());
+ bob.append("desc", _coordinatorName);
+ bob.append("op", "command");
+ bob.append("active", true);
+
+ // Create command description
+ BSONObjBuilder cmdInfoBuilder;
+ {
+ stdx::lock_guard lk{_docMutex};
+ if (const auto& optComment = getForwardableOpMetadata().getComment()) {
+ cmdInfoBuilder.append(optComment.get().firstElement());
+ }
+ }
+ appendCommandInfo(&cmdInfoBuilder);
+ bob.append("command", cmdInfoBuilder.obj());
+
+ return bob;
+ }
+
+ const std::string _coordinatorName;
const BSONObj _initialState;
mutable Mutex _docMutex = MONGO_MAKE_LATCH("ShardingDDLCoordinator::_docMutex");
StateDoc _doc;
@@ -193,14 +229,14 @@ protected:
template <class StateDoc, class Phase>
class RecoverableShardingDDLCoordinator : public ShardingDDLCoordinatorImpl<StateDoc> {
-
protected:
using ShardingDDLCoordinatorImpl<StateDoc>::_doc;
using ShardingDDLCoordinatorImpl<StateDoc>::_docMutex;
RecoverableShardingDDLCoordinator(ShardingDDLCoordinatorService* service,
+ const std::string& name,
const BSONObj& initialStateDoc)
- : ShardingDDLCoordinatorImpl<StateDoc>(service, initialStateDoc) {}
+ : ShardingDDLCoordinatorImpl<StateDoc>(service, name, initialStateDoc) {}
virtual StringData serializePhase(const Phase& phase) const = 0;
@@ -245,6 +281,18 @@ protected:
}
}
+ BSONObjBuilder basicReportBuilder() const noexcept override {
+ auto baseReportBuilder = ShardingDDLCoordinatorImpl<StateDoc>::basicReportBuilder();
+
+ const auto currPhase = [&]() {
+ stdx::lock_guard l{_docMutex};
+ return _doc.getPhase();
+ }();
+
+ baseReportBuilder.append("currentPhase", serializePhase(currPhase));
+ return baseReportBuilder;
+ }
+
void _insertStateDocument(OperationContext* opCtx, StateDoc&& newDoc) {
auto copyMetadata = newDoc.getShardingDDLCoordinatorMetadata();
copyMetadata.setRecoveredFromDisk(true);