diff options
author | Aaron <aaron@10gen.com> | 2010-03-23 12:04:54 -0700 |
---|---|---|
committer | Aaron <aaron@10gen.com> | 2010-03-23 12:04:54 -0700 |
commit | 5468103d28983d35510ef81ffa33e2be829ab23f (patch) | |
tree | 5f3a5c49d8d66257fcb1f88307401c0ac3efd1be | |
parent | f6ea3d75f4576c007553d53f5bb9496e6b0c6f19 (diff) | |
download | mongo-5468103d28983d35510ef81ffa33e2be829ab23f.tar.gz |
SERVER-812 lastError may not be set during shutdown, so clean up failed index before validating lastError
-rw-r--r-- | db/pdfile.cpp | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/db/pdfile.cpp b/db/pdfile.cpp index d2ecd91ef31..223ce1a9b42 100644 --- a/db/pdfile.cpp +++ b/db/pdfile.cpp @@ -1469,12 +1469,14 @@ namespace mongo { try { buildAnIndex(tabletoidxns, tableToIndex, idx, idxNo, background); } catch( DBException& ) { - // save our error msg string as an exception on dropIndexes will overwrite our message + // save our error msg string as an exception or dropIndexes will overwrite our message LastError *le = lastError.get(); - assert( le ); - int savecode = le->code; - string saveerrmsg = le->msg; - assert( !saveerrmsg.empty() ); + int savecode; + string saveerrmsg; + if ( le ) { + savecode = le->code; + saveerrmsg = le->msg; + } // roll back this index string name = idx.indexName(); @@ -1484,6 +1486,8 @@ namespace mongo { if( !ok ) { log() << "failed to drop index after a unique key error building it: " << errmsg << ' ' << tabletoidxns << ' ' << name << endl; } + + assert( le && !saveerrmsg.empty() ); raiseError(savecode,saveerrmsg.c_str()); throw; } |