-
Type: Bug
-
Resolution: Done
-
Priority: Major - P3
-
Affects Version/s: None
-
Component/s: Index Maintenance, Storage
-
None
-
ALL
The code listed below assumes that an AssertionException thrown by BtreeBuilder::addKey() is a dup key assertion (or a user interrupt) if dups are not allowed. If dropDups is on, assertions other than dup key assertions will incorrectly be treated as dup key assertions.
try { if ( !dupsAllowed && dropDups ) { LastError::Disabled led( lastError.get() ); btBuilder.addKey(d.first, d.second); } else { btBuilder.addKey(d.first, d.second); } } catch( AssertionException& e ) { if ( dupsAllowed ) { // unknown exception?? throw; } if( e.interrupted() ) { killCurrentOp.checkForInterrupt(); } if ( ! dropDups ) throw; /* we could queue these on disk, but normally there are very few dups, so instead we keep in ram and have a limit. */ dupsToDrop.insert(d.second); uassert( 10092 , "too may dups on index build with dropDups=true", dupsToDrop.size() < 1000000 ); }
- is related to
-
SERVER-8242 assertion failures (btree) during repair
- Closed