summaryrefslogtreecommitdiff
path: root/jstests/slowNightly/explain1.js
diff options
context:
space:
mode:
Diffstat (limited to 'jstests/slowNightly/explain1.js')
-rw-r--r--jstests/slowNightly/explain1.js17
1 files changed, 17 insertions, 0 deletions
diff --git a/jstests/slowNightly/explain1.js b/jstests/slowNightly/explain1.js
new file mode 100644
index 0000000..81baeb6
--- /dev/null
+++ b/jstests/slowNightly/explain1.js
@@ -0,0 +1,17 @@
+// SERVER-2662 - drop client cursor in a context where query will yield frequently
+
+t = db.jstests_slowNightly_explain1;
+t.drop();
+
+// Periodically drops the collection, invalidating client cursors for s2's operations.
+s1 = startParallelShell( "t = db.jstests_slowNightly_explain1; for( var i = 0; i < 80; ++i ) { t.drop(); t.ensureIndex({x:1}); for( var j = 0; j < 1000; ++j ) { t.save( {x:j,y:1} ) }; sleep( 100 ); }" );
+
+// Query repeatedly.
+s2 = startParallelShell( "t = db.jstests_slowNightly_explain1; for( var i = 0; i < 500; ++i ) { try { z = t.find( {x:{$gt:0},y:1} ).explain(); t.count( {x:{$gt:0},y:1} ); } catch( e ) {} }" );
+
+// Put pressure on s2 to yield more often.
+s3 = startParallelShell( "t = db.jstests_slowNightly_explain1; for( var i = 0; i < 200; ++i ) { t.validate({scandata:true}); }" );
+
+s1();
+s2();
+s3();