summaryrefslogtreecommitdiff
path: root/src/mongo/db/repl/replication_coordinator_external_state.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/repl/replication_coordinator_external_state.h')
-rw-r--r--src/mongo/db/repl/replication_coordinator_external_state.h288
1 files changed, 144 insertions, 144 deletions
diff --git a/src/mongo/db/repl/replication_coordinator_external_state.h b/src/mongo/db/repl/replication_coordinator_external_state.h
index 10e842bf36a..44e60c9b113 100644
--- a/src/mongo/db/repl/replication_coordinator_external_state.h
+++ b/src/mongo/db/repl/replication_coordinator_external_state.h
@@ -36,150 +36,150 @@
namespace mongo {
- class BSONObj;
- class OID;
- class OperationContext;
- class Status;
- struct HostAndPort;
- template <typename T> class StatusWith;
+class BSONObj;
+class OID;
+class OperationContext;
+class Status;
+struct HostAndPort;
+template <typename T>
+class StatusWith;
namespace repl {
- class LastVote;
-
- /**
- * This class represents the interface the ReplicationCoordinator uses to interact with the
- * rest of the system. All functionality of the ReplicationCoordinatorImpl that would introduce
- * dependencies on large sections of the server code and thus break the unit testability of
- * ReplicationCoordinatorImpl should be moved here.
- */
- class ReplicationCoordinatorExternalState {
- MONGO_DISALLOW_COPYING(ReplicationCoordinatorExternalState);
- public:
-
- ReplicationCoordinatorExternalState();
- virtual ~ReplicationCoordinatorExternalState();
-
- /**
- * Starts the background sync, producer, and sync source feedback threads
- *
- * NOTE: Only starts threads if they are not already started,
- */
- virtual void startThreads() = 0;
-
- /**
- * Starts the Master/Slave threads and sets up logOp
- */
- virtual void startMasterSlave(OperationContext* txn) = 0;
-
- /**
- * Performs any necessary external state specific shutdown tasks, such as cleaning up
- * the threads it started.
- */
- virtual void shutdown() = 0;
-
- /**
- * Creates the oplog and writes the first entry.
- */
- virtual void initiateOplog(OperationContext* txn) = 0;
-
- /**
- * Simple wrapper around SyncSourceFeedback::forwardSlaveProgress. Signals to the
- * SyncSourceFeedback thread that it needs to wake up and send a replSetUpdatePosition
- * command upstream.
- */
- virtual void forwardSlaveProgress() = 0;
-
- /**
- * Queries the singleton document in local.me. If it exists and our hostname has not
- * changed since we wrote, returns the RID stored in the object. If the document does not
- * exist or our hostname doesn't match what was recorded in local.me, generates a new OID
- * to use as our RID, stores it in local.me, and returns it.
- */
- virtual OID ensureMe(OperationContext*) = 0;
-
- /**
- * Returns true if "host" is one of the network identities of this node.
- */
- virtual bool isSelf(const HostAndPort& host) = 0;
-
- /**
- * Gets the replica set config document from local storage, or returns an error.
- */
- virtual StatusWith<BSONObj> loadLocalConfigDocument(OperationContext* txn) = 0;
-
- /**
- * Stores the replica set config document in local storage, or returns an error.
- */
- virtual Status storeLocalConfigDocument(OperationContext* txn, const BSONObj& config) = 0;
-
- /**
- * Gets the replica set lastVote document from local storage, or returns an error.
- */
- virtual StatusWith<LastVote> loadLocalLastVoteDocument(OperationContext* txn) = 0;
-
- /**
- * Stores the replica set lastVote document in local storage, or returns an error.
- */
- virtual Status storeLocalLastVoteDocument(OperationContext* txn,
- const LastVote& lastVote) = 0;
-
- /**
- * Sets the global opTime to be 'newTime'.
- */
- virtual void setGlobalTimestamp(const Timestamp& newTime) = 0;
-
- /**
- * Gets the last optime of an operation performed on this host, from stable
- * storage.
- */
- virtual StatusWith<OpTime> loadLastOpTime(OperationContext* txn) = 0;
-
- /**
- * Returns the HostAndPort of the remote client connected to us that initiated the operation
- * represented by "txn".
- */
- virtual HostAndPort getClientHostAndPort(const OperationContext* txn) = 0;
-
- /**
- * Closes all connections except those marked with the keepOpen property, which should
- * just be connections used for heartbeating.
- * This is used during stepdown, and transition out of primary.
- */
- virtual void closeConnections() = 0;
-
- /**
- * Kills all operations that have a Client that is associated with an incoming user
- * connection. Used during stepdown.
- */
- virtual void killAllUserOperations(OperationContext* txn) = 0;
-
- /**
- * Clears all cached sharding metadata on this server. This is called after stepDown to
- * ensure that if the node becomes primary again in the future it will reload an up-to-date
- * version of the sharding data.
- */
- virtual void clearShardingState() = 0;
-
- /**
- * Notifies the bgsync and syncSourceFeedback threads to choose a new sync source.
- */
- virtual void signalApplierToChooseNewSyncSource() = 0;
-
- /**
- * Returns an OperationContext, owned by the caller, that may be used in methods of
- * the same instance that require an OperationContext.
- */
- virtual OperationContext* createOperationContext(const std::string& threadName) = 0;
-
- /**
- * Drops all temporary collections on all databases except "local".
- *
- * The implementation may assume that the caller has acquired the global exclusive lock
- * for "txn".
- */
- virtual void dropAllTempCollections(OperationContext* txn) = 0;
- };
-
-} // namespace repl
-} // namespace mongo
+class LastVote;
+
+/**
+ * This class represents the interface the ReplicationCoordinator uses to interact with the
+ * rest of the system. All functionality of the ReplicationCoordinatorImpl that would introduce
+ * dependencies on large sections of the server code and thus break the unit testability of
+ * ReplicationCoordinatorImpl should be moved here.
+ */
+class ReplicationCoordinatorExternalState {
+ MONGO_DISALLOW_COPYING(ReplicationCoordinatorExternalState);
+
+public:
+ ReplicationCoordinatorExternalState();
+ virtual ~ReplicationCoordinatorExternalState();
+
+ /**
+ * Starts the background sync, producer, and sync source feedback threads
+ *
+ * NOTE: Only starts threads if they are not already started,
+ */
+ virtual void startThreads() = 0;
+
+ /**
+ * Starts the Master/Slave threads and sets up logOp
+ */
+ virtual void startMasterSlave(OperationContext* txn) = 0;
+
+ /**
+ * Performs any necessary external state specific shutdown tasks, such as cleaning up
+ * the threads it started.
+ */
+ virtual void shutdown() = 0;
+
+ /**
+ * Creates the oplog and writes the first entry.
+ */
+ virtual void initiateOplog(OperationContext* txn) = 0;
+
+ /**
+ * Simple wrapper around SyncSourceFeedback::forwardSlaveProgress. Signals to the
+ * SyncSourceFeedback thread that it needs to wake up and send a replSetUpdatePosition
+ * command upstream.
+ */
+ virtual void forwardSlaveProgress() = 0;
+
+ /**
+ * Queries the singleton document in local.me. If it exists and our hostname has not
+ * changed since we wrote, returns the RID stored in the object. If the document does not
+ * exist or our hostname doesn't match what was recorded in local.me, generates a new OID
+ * to use as our RID, stores it in local.me, and returns it.
+ */
+ virtual OID ensureMe(OperationContext*) = 0;
+
+ /**
+ * Returns true if "host" is one of the network identities of this node.
+ */
+ virtual bool isSelf(const HostAndPort& host) = 0;
+
+ /**
+ * Gets the replica set config document from local storage, or returns an error.
+ */
+ virtual StatusWith<BSONObj> loadLocalConfigDocument(OperationContext* txn) = 0;
+
+ /**
+ * Stores the replica set config document in local storage, or returns an error.
+ */
+ virtual Status storeLocalConfigDocument(OperationContext* txn, const BSONObj& config) = 0;
+
+ /**
+ * Gets the replica set lastVote document from local storage, or returns an error.
+ */
+ virtual StatusWith<LastVote> loadLocalLastVoteDocument(OperationContext* txn) = 0;
+
+ /**
+ * Stores the replica set lastVote document in local storage, or returns an error.
+ */
+ virtual Status storeLocalLastVoteDocument(OperationContext* txn, const LastVote& lastVote) = 0;
+
+ /**
+ * Sets the global opTime to be 'newTime'.
+ */
+ virtual void setGlobalTimestamp(const Timestamp& newTime) = 0;
+
+ /**
+ * Gets the last optime of an operation performed on this host, from stable
+ * storage.
+ */
+ virtual StatusWith<OpTime> loadLastOpTime(OperationContext* txn) = 0;
+
+ /**
+ * Returns the HostAndPort of the remote client connected to us that initiated the operation
+ * represented by "txn".
+ */
+ virtual HostAndPort getClientHostAndPort(const OperationContext* txn) = 0;
+
+ /**
+ * Closes all connections except those marked with the keepOpen property, which should
+ * just be connections used for heartbeating.
+ * This is used during stepdown, and transition out of primary.
+ */
+ virtual void closeConnections() = 0;
+
+ /**
+ * Kills all operations that have a Client that is associated with an incoming user
+ * connection. Used during stepdown.
+ */
+ virtual void killAllUserOperations(OperationContext* txn) = 0;
+
+ /**
+ * Clears all cached sharding metadata on this server. This is called after stepDown to
+ * ensure that if the node becomes primary again in the future it will reload an up-to-date
+ * version of the sharding data.
+ */
+ virtual void clearShardingState() = 0;
+
+ /**
+ * Notifies the bgsync and syncSourceFeedback threads to choose a new sync source.
+ */
+ virtual void signalApplierToChooseNewSyncSource() = 0;
+
+ /**
+ * Returns an OperationContext, owned by the caller, that may be used in methods of
+ * the same instance that require an OperationContext.
+ */
+ virtual OperationContext* createOperationContext(const std::string& threadName) = 0;
+
+ /**
+ * Drops all temporary collections on all databases except "local".
+ *
+ * The implementation may assume that the caller has acquired the global exclusive lock
+ * for "txn".
+ */
+ virtual void dropAllTempCollections(OperationContext* txn) = 0;
+};
+
+} // namespace repl
+} // namespace mongo