diff options
Diffstat (limited to 'src/mongo/db/repl/master_slave.cpp')
-rw-r--r-- | src/mongo/db/repl/master_slave.cpp | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/src/mongo/db/repl/master_slave.cpp b/src/mongo/db/repl/master_slave.cpp index ed212ec276f..77a4b09e9d2 100644 --- a/src/mongo/db/repl/master_slave.cpp +++ b/src/mongo/db/repl/master_slave.cpp @@ -163,12 +163,10 @@ namespace repl { void ReplSource::ensureMe(OperationContext* txn) { string myname = getHostName(); - bool exists = false; - { - Client::ReadContext ctx(txn, "local"); - // local.me is an identifier for a server for getLastError w:2+ - exists = Helpers::getSingleton(txn, "local.me", _me); - } + + // local.me is an identifier for a server for getLastError w:2+ + bool exists = Helpers::getSingleton(txn, "local.me", _me); + if (!exists || !_me.hasField("host") || _me["host"].String() != myname) { Client::WriteContext ctx(txn, "local"); // clean out local.me @@ -1375,9 +1373,10 @@ namespace repl { BSONObjBuilder b; b.append(_id); BSONObj result; - Client::ReadContext ctx(txn, ns ); - if( Helpers::findById(txn, ctx.ctx().db(), ns, b.done(), result) ) + AutoGetCollectionForRead ctx(txn, ns ); + if (Helpers::findById(txn, ctx.getDb(), ns, b.done(), result)) { _dummy_z += result.objsize(); // touch + } } } catch( DBException& ) { |