summaryrefslogtreecommitdiff
path: root/src/mongo/db/repl/replication_coordinator.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/repl/replication_coordinator.h')
-rw-r--r--src/mongo/db/repl/replication_coordinator.h21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/mongo/db/repl/replication_coordinator.h b/src/mongo/db/repl/replication_coordinator.h
index 229ee7e5df3..9c310e41025 100644
--- a/src/mongo/db/repl/replication_coordinator.h
+++ b/src/mongo/db/repl/replication_coordinator.h
@@ -46,6 +46,7 @@ namespace mongo {
class BSONObj;
class BSONObjBuilder;
+class CommitQuorumOptions;
class IndexDescriptor;
class NamespaceString;
class OperationContext;
@@ -251,6 +252,26 @@ public:
const WriteConcernOptions& writeConcern) const = 0;
/**
+ * Checks if the 'commitQuorum' can be satisfied by all the members in the replica set; if it
+ * cannot be satisfied, then the 'UnsatisfiableCommitQuorum' error code is returned.
+ *
+ * Returns the 'NoReplicationEnabled' error code if this is called without replication enabled.
+ */
+ virtual Status checkIfCommitQuorumCanBeSatisfied(
+ const CommitQuorumOptions& commitQuorum) const = 0;
+
+ /**
+ * Checks if the 'commitQuorum' has been satisfied by the 'commitReadyMembers', if it has been
+ * satisfied, return true.
+ *
+ * Prior to checking if the 'commitQuorum' is satisfied by 'commitReadyMembers', it calls
+ * 'checkIfCommitQuorumCanBeSatisfied()' with all the replica set members.
+ */
+ virtual StatusWith<bool> checkIfCommitQuorumIsSatisfied(
+ const CommitQuorumOptions& commitQuorum,
+ const std::vector<HostAndPort>& commitReadyMembers) const = 0;
+
+ /**
* Returns Status::OK() if it is valid for this node to serve reads on the given collection
* and an errorcode indicating why the node cannot if it cannot.
*/