File: delete_during_migrate.js

package info (click to toggle)
mongodb 1%3A2.4.10-5
  • links: PTS, VCS
  • area: main
  • in suites: jessie-kfreebsd
  • size: 82,464 kB
  • sloc: cpp: 740,225; ansic: 152,098; sh: 13,820; python: 11,864; makefile: 1,012; perl: 922; pascal: 617; java: 452; lisp: 222; asm: 174
file content (42 lines) | stat: -rw-r--r-- 1,476 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
// Test migrating a big chunk while deletions are happening within that chunk.
// Test is slightly non-deterministic, since removes could happen before migrate
// starts. Protect against that by making chunk very large.

// start up a new sharded cluster
var st = new ShardingTest({ shards : 2, mongos : 1 });

// stop balancer since we want manual control for this
st.stopBalancer();

var dbname = "testDB";
var coll = "foo";
var ns = dbname + "." + coll;
var s = st.s0;
var t = s.getDB( dbname ).getCollection( coll );

// Create fresh collection with lots of docs
t.drop();
for ( i=0; i<200000; i++ ){
    t.insert( { a : i  } );
}

// enable sharding of the collection. Only 1 chunk.
t.ensureIndex( { a : 1 } );
s.adminCommand( { enablesharding : dbname } );
s.adminCommand( { shardcollection : ns , key: { a : 1 } } );

// start a parallel shell that deletes things
startMongoProgramNoConnect( "mongo" ,
                            "--host" , getHostName() ,
                            "--port" , st.s0.port ,
                            "--eval" , "db." + coll + ".remove({});" ,
                            dbname );

// migrate while deletions are happening
var moveResult =  s.adminCommand( { moveChunk : ns ,
                                    find : { a : 1 } ,
                                    to : st.getOther( st.getServer( dbname ) ).name } );
// check if migration worked
assert( moveResult.ok , "migration didn't work while doing deletes" );

st.stop();