summaryrefslogtreecommitdiff
path: root/jstests/slow2/conc_update.js
diff options
context:
space:
mode:
Diffstat (limited to 'jstests/slow2/conc_update.js')
-rw-r--r--jstests/slow2/conc_update.js48
1 files changed, 26 insertions, 22 deletions
diff --git a/jstests/slow2/conc_update.js b/jstests/slow2/conc_update.js
index 4ee5bd22ca7..0d778df047e 100644
--- a/jstests/slow2/conc_update.js
+++ b/jstests/slow2/conc_update.js
@@ -6,42 +6,46 @@ db.dropDatabase();
NRECORDS=3*1024*1024
print("loading "+NRECORDS+" documents (progress msg every 1024*1024 documents)")
-var bulk = db.conc.initializeUnorderedBulkOp();
-for (var i = 0; i < NRECORDS; i++) {
- bulk.insert({ x: i });
+for (i=0; i<(NRECORDS); i++) {
+ db.conc.insert({x:i})
+ if ((i%(1024*1024))==0)
+ print("loaded " + i/(1024*1024) + " mibi-records")
}
-assert.writeOK(bulk.execute());
print("making an index (this will take a while)")
db.conc.ensureIndex({x:1})
var c1=db.conc.count({x:{$lt:NRECORDS}})
-updater = startParallelShell("db = db.getSisterDB('concurrency');\
- db.concflag.insert({ inprog: true });\
- sleep(20);\
- assert.writeOK(db.conc.update({}, \
- { $inc: { x: " + NRECORDS + "}}, false, true)); \
- assert.writeOK(db.concflag.update({}, { inprog: false }));");
+updater=startParallelShell("db=db.getSisterDB('concurrency');\
+ db.concflag.insert( {inprog:true} );\
+ sleep(20);\
+ db.conc.update({}, {$inc:{x: "+NRECORDS+"}}, false, true);\
+ e=db.getLastError();\
+ print('update error: '+ e);\
+ db.concflag.update({},{inprog:false});\
+ assert.eq(e, null, 'update failed');");
-assert.soon( function(){ var x = db.concflag.findOne(); return x && x.inprog; } ,
+assert.soon( function(){ var x = db.concflag.findOne(); return x && x.inprog; } ,
"wait for fork" , 30000 , 1 );
querycount=0;
decrements=0;
misses=0
-assert.soon(function(){
- c2=db.conc.count({x:{$lt:NRECORDS}})
- print(c2)
- querycount++;
- if (c2<c1)
- decrements++;
- else
- misses++;
- c1 = c2;
- return ! db.concflag.findOne().inprog;
-}, "update never finished" , 2 * 60 * 60 * 1000 , 10 );
+assert.soon(
+ function(){
+ c2=db.conc.count({x:{$lt:NRECORDS}})
+ print(c2)
+ querycount++;
+ if (c2<c1)
+ decrements++;
+ else
+ misses++;
+ c1 = c2;
+ return ! db.concflag.findOne().inprog;
+ } ,
+ "update never finished" , 2 * 60 * 60 * 1000 , 10 );
print(querycount + " queries, " + decrements + " decrements, " + misses + " misses");