summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAaron <aaron@10gen.com>2010-03-23 12:04:54 -0700
committerAaron <aaron@10gen.com>2010-03-23 12:04:54 -0700
commit5468103d28983d35510ef81ffa33e2be829ab23f (patch)
tree5f3a5c49d8d66257fcb1f88307401c0ac3efd1be
parentf6ea3d75f4576c007553d53f5bb9496e6b0c6f19 (diff)
downloadmongo-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.cpp14
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;
}