Permalink
Browse files

fix for yield on multi-updatre SERVER-1020

  • Loading branch information...
1 parent 1ea54f2 commit 016af45e0b5cbe1711906fb75002031b0b573183 @erh erh committed May 17, 2010
Showing with 24 additions and 2 deletions.
  1. +6 −2 db/update.cpp
  2. +18 −0 jstests/update_multi4.js
View
@@ -842,8 +842,12 @@ namespace mongo {
bool indexHack = multi && ( modsIsIndexed || ! mss->canApplyInPlace() );
- if ( indexHack )
- c->noteLocation();
+ if ( indexHack ){
+ if ( cc.get() )
+ cc->updateLocation();
+ else
+ c->noteLocation();
+ }
if ( modsIsIndexed <= 0 && mss->canApplyInPlace() ){
mss->applyModsInPlace();// const_cast<BSONObj&>(onDisk) );
@@ -0,0 +1,18 @@
+
+t = db.update_mulit4;
+t.drop();
+
+for(i=0;i<1000;i++){
+ t.insert( { _id:i ,
+ k:i%12,
+ v:"v"+i%12 } );
+}
+
+t.ensureIndex({k:1})
+
+assert.eq( 84 , t.count({k:2,v:"v2"} ) , "A0" );
+
+t.update({k:2},{$set:{v:"two v2"}},false,true)
+
+assert.eq( 0 , t.count({k:2,v:"v2"} ) , "A1" );
+assert.eq( 84 , t.count({k:2,v:"two v2"} ) , "A2" );

0 comments on commit 016af45

Please sign in to comment.