summaryrefslogtreecommitdiff
path: root/src/mongo/db/repl/oplog.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/repl/oplog.h')
-rw-r--r--src/mongo/db/repl/oplog.h189
1 files changed, 94 insertions, 95 deletions
diff --git a/src/mongo/db/repl/oplog.h b/src/mongo/db/repl/oplog.h
index b3a1f19f634..16e0944ccf6 100644
--- a/src/mongo/db/repl/oplog.h
+++ b/src/mongo/db/repl/oplog.h
@@ -39,100 +39,99 @@
#include "mongo/util/time_support.h"
namespace mongo {
- class BSONObj;
- class Collection;
- struct CollectionOptions;
- class Database;
- class NamespaceString;
- class OperationContext;
- class Timestamp;
- class RecordId;
+class BSONObj;
+class Collection;
+struct CollectionOptions;
+class Database;
+class NamespaceString;
+class OperationContext;
+class Timestamp;
+class RecordId;
namespace repl {
- class ReplicationCoordinator;
-
- // Create a new capped collection for the oplog if it doesn't yet exist.
- // This will be either local.oplog.rs (replica sets) or local.oplog.$main (master/slave)
- // If the collection already exists, set the 'last' OpTime if master/slave (side effect!)
- void createOplog(OperationContext* txn);
-
- // This function writes ops into the replica-set oplog;
- // used internally by replication secondaries after they have applied ops. Updates the global
- // optime.
- // Returns the optime for the last op inserted.
- OpTime writeOpsToOplog(OperationContext* txn,
- const std::deque<BSONObj>& ops);
-
- extern std::string rsOplogName;
- extern std::string masterSlaveOplogName;
-
- extern int OPLOG_VERSION;
-
- /** Log an operation to the local oplog
- *
- * @param opstr
- * "i" insert
- * "u" update
- * "d" delete
- * "c" db cmd
- * "n" no-op
- * "db" declares presence of a database (ns is set to the db name + '.')
- *
- * For 'u' records, 'obj' captures the mutation made to the object but not
- * the object itself. 'o2' captures the the criteria for the object that will be modified.
- */
- void _logOp(OperationContext* txn,
- const char *opstr,
- const char *ns,
- const BSONObj& obj,
- BSONObj *o2,
- bool fromMigrate);
-
- // Flush out the cached pointers to the local database and oplog.
- // Used by the closeDatabase command to ensure we don't cache closed things.
- void oplogCheckCloseDatabase(OperationContext* txn, Database * db);
-
- /**
- * Take a non-command op and apply it locally
- * Used for applying from an oplog
- * @param convertUpdateToUpsert convert some updates to upserts for idempotency reasons
- * Returns failure status if the op was an update that could not be applied.
- */
- Status applyOperation_inlock(OperationContext* txn,
- Database* db,
- const BSONObj& op,
- bool convertUpdateToUpsert = false);
-
- /**
- * Take a command op and apply it locally
- * Used for applying from an oplog
- * Returns failure status if the op that could not be applied.
- */
- Status applyCommand_inlock(OperationContext* txn, const BSONObj& op);
-
- /**
- * Waits up to one second for the Timestamp from the oplog to change.
- */
- void waitUpToOneSecondForTimestampChange(const Timestamp& referenceTime);
-
- /**
- * Initializes the global Timestamp with the value from the timestamp of the last oplog entry.
- */
- void initTimestampFromOplog(OperationContext* txn, const std::string& oplogNS);
-
- /**
- * Sets the global Timestamp to be 'newTime'.
- */
- void setNewTimestamp(const Timestamp& newTime);
-
- /*
- * Extract the OpTime from log entry.
- */
- OpTime extractOpTime(const BSONObj& op);
-
- /**
- * Detects the current replication mode and sets the "_oplogCollectionName" accordingly.
- */
- void setOplogCollectionName();
-} // namespace repl
-} // namespace mongo
+class ReplicationCoordinator;
+
+// Create a new capped collection for the oplog if it doesn't yet exist.
+// This will be either local.oplog.rs (replica sets) or local.oplog.$main (master/slave)
+// If the collection already exists, set the 'last' OpTime if master/slave (side effect!)
+void createOplog(OperationContext* txn);
+
+// This function writes ops into the replica-set oplog;
+// used internally by replication secondaries after they have applied ops. Updates the global
+// optime.
+// Returns the optime for the last op inserted.
+OpTime writeOpsToOplog(OperationContext* txn, const std::deque<BSONObj>& ops);
+
+extern std::string rsOplogName;
+extern std::string masterSlaveOplogName;
+
+extern int OPLOG_VERSION;
+
+/** Log an operation to the local oplog
+ *
+ * @param opstr
+ * "i" insert
+ * "u" update
+ * "d" delete
+ * "c" db cmd
+ * "n" no-op
+ * "db" declares presence of a database (ns is set to the db name + '.')
+ *
+ * For 'u' records, 'obj' captures the mutation made to the object but not
+ * the object itself. 'o2' captures the the criteria for the object that will be modified.
+ */
+void _logOp(OperationContext* txn,
+ const char* opstr,
+ const char* ns,
+ const BSONObj& obj,
+ BSONObj* o2,
+ bool fromMigrate);
+
+// Flush out the cached pointers to the local database and oplog.
+// Used by the closeDatabase command to ensure we don't cache closed things.
+void oplogCheckCloseDatabase(OperationContext* txn, Database* db);
+
+/**
+ * Take a non-command op and apply it locally
+ * Used for applying from an oplog
+ * @param convertUpdateToUpsert convert some updates to upserts for idempotency reasons
+ * Returns failure status if the op was an update that could not be applied.
+ */
+Status applyOperation_inlock(OperationContext* txn,
+ Database* db,
+ const BSONObj& op,
+ bool convertUpdateToUpsert = false);
+
+/**
+ * Take a command op and apply it locally
+ * Used for applying from an oplog
+ * Returns failure status if the op that could not be applied.
+ */
+Status applyCommand_inlock(OperationContext* txn, const BSONObj& op);
+
+/**
+ * Waits up to one second for the Timestamp from the oplog to change.
+ */
+void waitUpToOneSecondForTimestampChange(const Timestamp& referenceTime);
+
+/**
+ * Initializes the global Timestamp with the value from the timestamp of the last oplog entry.
+ */
+void initTimestampFromOplog(OperationContext* txn, const std::string& oplogNS);
+
+/**
+ * Sets the global Timestamp to be 'newTime'.
+ */
+void setNewTimestamp(const Timestamp& newTime);
+
+/*
+ * Extract the OpTime from log entry.
+ */
+OpTime extractOpTime(const BSONObj& op);
+
+/**
+ * Detects the current replication mode and sets the "_oplogCollectionName" accordingly.
+ */
+void setOplogCollectionName();
+} // namespace repl
+} // namespace mongo