diff options
author | Kristina <kristina@10gen.com> | 2011-10-25 11:41:38 -0400 |
---|---|---|
committer | Kristina <kristina@10gen.com> | 2011-10-25 11:47:43 -0400 |
commit | 76c65c947384a1f0de6f2c8ebc41f1adab2780d3 (patch) | |
tree | 12b4cd1f21ebd24cc2a6a0c6516374e5400fc31d /db/repl/rs_rollback.cpp | |
parent | 4f7d9615530868f2aca24217b07707b4925b21c9 (diff) | |
download | mongo-76c65c947384a1f0de6f2c8ebc41f1adab2780d3.tar.gz |
Auth before cloning collection during rollback SERVER-4115
Diffstat (limited to 'db/repl/rs_rollback.cpp')
-rw-r--r-- | db/repl/rs_rollback.cpp | 18 |
1 files changed, 6 insertions, 12 deletions
diff --git a/db/repl/rs_rollback.cpp b/db/repl/rs_rollback.cpp index f012e6577a8..97a910e8309 100644 --- a/db/repl/rs_rollback.cpp +++ b/db/repl/rs_rollback.cpp @@ -388,24 +388,18 @@ namespace mongo { for( set<string>::iterator i = h.collectionsToResync.begin(); i != h.collectionsToResync.end(); i++ ) { string ns = *i; sethbmsg(str::stream() << "rollback 4.1 coll resync " << ns); - Client::Context c(*i); - try { + + Client::Context c(ns); + { bob res; string errmsg; dropCollection(ns, errmsg, res); { dbtemprelease r; - bool ok = copyCollectionFromRemote(them->getServerAddress(), ns, bo(), errmsg, false, true, false); - if( !ok ) { - log() << "replSet rollback error resyncing collection " << ns << ' ' << errmsg << rsLog; - throw "rollback error resyncing rollection [1]"; - } + bool ok = copyCollectionFromRemote(them->getServerAddress(), ns, errmsg); + uassert(15909, str::stream() << "replSet rollback error resyncing collection " << ns << ' ' << errmsg, ok); } } - catch(...) { - log() << "replset rollback error resyncing collection " << ns << rsLog; - throw "rollback error resyncing rollection [2]"; - } } /* we did more reading from primary, so check it again for a rollback (which would mess us up), and @@ -423,7 +417,7 @@ namespace mongo { setMinValid(newMinValid); } } - catch(...) { + catch (DBException& e) { err = "can't get/set minvalid"; } if( h.rbid != getRBID(r.conn()) ) { |