summaryrefslogtreecommitdiff
path: root/src/mongo/db/op_observer.cpp
diff options
context:
space:
mode:
authorMartin Bligh <mbligh@mongodb.com>2015-10-27 09:09:27 -0400
committerMartin Bligh <mbligh@mongodb.com>2015-10-27 09:09:27 -0400
commitbc0704481b68db6d3116eb2692088f73759d776a (patch)
treefbcef146c46d2517868b23529caeabf18b1b2856 /src/mongo/db/op_observer.cpp
parent38e5c4febb788441f19044a4d3d2b89e1ab70bf0 (diff)
downloadmongo-bc0704481b68db6d3116eb2692088f73759d776a.tar.gz
SERVER-21031: Vectorize logOps
Diffstat (limited to 'src/mongo/db/op_observer.cpp')
-rw-r--r--src/mongo/db/op_observer.cpp25
1 files changed, 16 insertions, 9 deletions
diff --git a/src/mongo/db/op_observer.cpp b/src/mongo/db/op_observer.cpp
index 0563482a99a..720d26ca9f2 100644
--- a/src/mongo/db/op_observer.cpp
+++ b/src/mongo/db/op_observer.cpp
@@ -43,6 +43,8 @@
namespace mongo {
+using std::vector;
+
void OpObserver::onCreateIndex(OperationContext* txn,
const std::string& ns,
BSONObj indexDoc,
@@ -54,16 +56,21 @@ void OpObserver::onCreateIndex(OperationContext* txn,
logOpForDbHash(txn, ns.c_str());
}
-void OpObserver::onInsert(OperationContext* txn,
- const NamespaceString& ns,
- BSONObj doc,
- bool fromMigrate) {
- repl::logOp(txn, "i", ns.ns().c_str(), doc, nullptr, fromMigrate);
+void OpObserver::onInserts(OperationContext* txn,
+ const NamespaceString& nss,
+ vector<BSONObj>::iterator begin,
+ vector<BSONObj>::iterator end,
+ bool fromMigrate) {
+ repl::logOps(txn, "i", nss, begin, end, fromMigrate);
+
+ const char* ns = nss.ns().c_str();
+ for (auto it = begin; it != end; it++) {
+ getGlobalAuthorizationManager()->logOp(txn, "i", ns, *it, nullptr);
+ logOpForSharding(txn, "i", ns, *it, nullptr, fromMigrate);
+ }
- getGlobalAuthorizationManager()->logOp(txn, "i", ns.ns().c_str(), doc, nullptr);
- logOpForSharding(txn, "i", ns.ns().c_str(), doc, nullptr, fromMigrate);
- logOpForDbHash(txn, ns.ns().c_str());
- if (strstr(ns.ns().c_str(), ".system.js")) {
+ logOpForDbHash(txn, ns);
+ if (strstr(ns, ".system.js")) {
Scope::storedFuncMod(txn);
}
}