summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndy Schwerin <schwerin@mongodb.com>2014-11-24 17:25:10 -0500
committerAndy Schwerin <schwerin@mongodb.com>2014-11-25 11:09:11 -0500
commitfa4f0277a788e78db3639eaa82d46bac1dfa9e34 (patch)
treecf4036acc575ad1463e55e6d5ca38c6742e243c8
parent28afa1465ca07a6d6a34bf2c09affa120f64c835 (diff)
downloadmongo-fa4f0277a788e78db3639eaa82d46bac1dfa9e34.tar.gz
SERVER-16107 Do not increment erased iterators when processing bad replica set configs.
-rw-r--r--src/mongo/db/repl/rs.cpp13
1 files changed, 7 insertions, 6 deletions
diff --git a/src/mongo/db/repl/rs.cpp b/src/mongo/db/repl/rs.cpp
index efcb546f2d0..4676860205f 100644
--- a/src/mongo/db/repl/rs.cpp
+++ b/src/mongo/db/repl/rs.cpp
@@ -835,15 +835,16 @@ namespace {
{
scoped_lock lck( replSettings.discoveredSeeds_mx );
if( replSettings.discoveredSeeds.size() > 0 ) {
- for (set<string>::iterator i = replSettings.discoveredSeeds.begin();
- i != replSettings.discoveredSeeds.end();
- i++) {
+ for (set<string>::iterator i = replSettings.discoveredSeeds.begin();
+ i != replSettings.discoveredSeeds.end();) {
try {
configs.mutableVector().push_back( ReplSetConfig::make(HostAndPort(*i)) );
+ ++i;
}
- catch( DBException& ) {
- LOG(1) << "replSet exception trying to load config from discovered seed " << *i << rsLog;
- replSettings.discoveredSeeds.erase(*i);
+ catch(const DBException& ex) {
+ log() << "replSet exception trying to load config from "
+ "discovered seed " << *i << "; " << ex.toString() << rsLog;
+ replSettings.discoveredSeeds.erase(*(i++));
}
}
}