diff options
author | Andy Schwerin <schwerin@mongodb.com> | 2014-11-24 17:25:10 -0500 |
---|---|---|
committer | Andy Schwerin <schwerin@mongodb.com> | 2014-11-25 11:09:11 -0500 |
commit | fa4f0277a788e78db3639eaa82d46bac1dfa9e34 (patch) | |
tree | cf4036acc575ad1463e55e6d5ca38c6742e243c8 | |
parent | 28afa1465ca07a6d6a34bf2c09affa120f64c835 (diff) | |
download | mongo-fa4f0277a788e78db3639eaa82d46bac1dfa9e34.tar.gz |
SERVER-16107 Do not increment erased iterators when processing bad replica set configs.
-rw-r--r-- | src/mongo/db/repl/rs.cpp | 13 |
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++)); } } } |