summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordwight <dwight@10gen.com>2010-07-16 10:43:01 -0400
committerdwight <dwight@10gen.com>2010-07-16 10:43:01 -0400
commit08aedb04ca4ca8e50788c14dcd95359e158d3889 (patch)
treecc236def7a8ba86025c4a00b2a7fe059291aac3a
parent2ac10b237e3681af855096b94a5f4d7068370ad7 (diff)
parenta911b2cb077349d2b1ade6e63cf3f74ab62a140a (diff)
downloadmongo-08aedb04ca4ca8e50788c14dcd95359e158d3889.tar.gz
Merge branch 'master' of github.com:mongodb/mongo
-rw-r--r--db/dbhelpers.cpp5
-rw-r--r--jstests/slowNightly/sharding_balance1.js18
-rw-r--r--jstests/slowNightly/sharding_balance2.js18
-rw-r--r--jstests/slowNightly/sharding_balance3.js18
-rw-r--r--s/d_migrate.cpp11
-rw-r--r--shell/servers.js21
6 files changed, 38 insertions, 53 deletions
diff --git a/db/dbhelpers.cpp b/db/dbhelpers.cpp
index 1801f4f795f..68715b0652b 100644
--- a/db/dbhelpers.cpp
+++ b/db/dbhelpers.cpp
@@ -240,7 +240,7 @@ namespace mongo {
key = k.obj();
return me.obj();
}
-
+
long long Helpers::removeRange( const string& ns , const BSONObj& min , const BSONObj& max , bool yield ){
BSONObj keya , keyb;
BSONObj minClean = toKeyFormat( min , keya );
@@ -249,7 +249,8 @@ namespace mongo {
Client::Context ctx(ns);
NamespaceDetails* nsd = nsdetails( ns.c_str() );
- assert( nsd );
+ if ( ! nsd )
+ return 0;
int ii = nsd->findIndexByKeyPattern( keya );
assert( ii >= 0 );
diff --git a/jstests/slowNightly/sharding_balance1.js b/jstests/slowNightly/sharding_balance1.js
index f8b2b542525..a30a657b439 100644
--- a/jstests/slowNightly/sharding_balance1.js
+++ b/jstests/slowNightly/sharding_balance1.js
@@ -4,8 +4,6 @@
s = new ShardingTest( "slow_sharding_balance1" , 2 , 2 , 1 , { chunksize : 1 } )
s.adminCommand( { enablesharding : "test" } );
-s.adminCommand( { shardcollection : "test.foo" , key : { _id : 1 } } );
-assert.eq( 1 , s.config.chunks.count() , "setup1" );
s.config.settings.find().forEach( printjson )
@@ -23,23 +21,11 @@ while ( inserted < ( 40 * 1024 * 1024 ) ){
}
db.getLastError();
+s.adminCommand( { shardcollection : "test.foo" , key : { _id : 1 } } );
assert.lt( 20 , s.config.chunks.count() , "setup2" );
-function dist(){
- var x = {}
- s.config.chunks.find( { ns : "test.foo" } ).forEach(
- function(z){
- if ( x[z.shard] )
- x[z.shard]++
- else
- x[z.shard] = 1;
- }
- );
- return x;
-}
-
function diff(){
- var x = dist();
+ var x = s.chunkCounts( "foo" );
printjson( x )
return Math.max( x.shard0 , x.shard1 ) - Math.min( x.shard0 , x.shard1 );
}
diff --git a/jstests/slowNightly/sharding_balance2.js b/jstests/slowNightly/sharding_balance2.js
index 300e664b530..f263ab39a9e 100644
--- a/jstests/slowNightly/sharding_balance2.js
+++ b/jstests/slowNightly/sharding_balance2.js
@@ -15,8 +15,6 @@ for ( var i=0; i<names.length; i++ ){
}
s.adminCommand( { enablesharding : "test" } );
-s.adminCommand( { shardcollection : "test.foo" , key : { _id : 1 } } );
-assert.eq( 1 , s.config.chunks.count() , "setup1" );
s.config.settings.find().forEach( printjson )
@@ -34,23 +32,11 @@ while ( inserted < ( 40 * 1024 * 1024 ) ){
}
db.getLastError();
+s.adminCommand( { shardcollection : "test.foo" , key : { _id : 1 } } );
assert.lt( 20 , s.config.chunks.count() , "setup2" );
-function dist(){
- var x = {}
- s.config.chunks.find( { ns : "test.foo" } ).forEach(
- function(z){
- if ( x[z.shard] )
- x[z.shard]++
- else
- x[z.shard] = 1;
- }
- );
- return x;
-}
-
function diff(){
- var x = dist();
+ var x = s.chunkCounts( "foo" );
printjson( x )
return Math.max( x.shard0 , x.shard1 ) - Math.min( x.shard0 , x.shard1 );
}
diff --git a/jstests/slowNightly/sharding_balance3.js b/jstests/slowNightly/sharding_balance3.js
index db03853e934..efc389d04d8 100644
--- a/jstests/slowNightly/sharding_balance3.js
+++ b/jstests/slowNightly/sharding_balance3.js
@@ -3,8 +3,6 @@
s = new ShardingTest( "slow_sharding_balance3" , 2 , 2 , 1 , { chunksize : 1 } );
s.adminCommand( { enablesharding : "test" } );
-s.adminCommand( { shardcollection : "test.foo" , key : { _id : 1 } } );
-assert.eq( 1 , s.config.chunks.count() , "setup1" );
s.config.settings.find().forEach( printjson );
@@ -22,23 +20,11 @@ while ( inserted < ( 40 * 1024 * 1024 ) ){
}
db.getLastError();
+s.adminCommand( { shardcollection : "test.foo" , key : { _id : 1 } } );
assert.lt( 20 , s.config.chunks.count() , "setup2" );
-function dist(){
- var x = {}
- s.config.chunks.find( { ns : "test.foo" } ).forEach(
- function(z){
- if ( x[z.shard] )
- x[z.shard]++
- else
- x[z.shard] = 1;
- }
- );
- return x;
-}
-
function diff(){
- var x = dist();
+ var x = s.chunkCounts( "foo" );
printjson( x )
return Math.max( x.shard0 , x.shard1 ) - Math.min( x.shard0 , x.shard1 );
}
diff --git a/s/d_migrate.cpp b/s/d_migrate.cpp
index f710ca03362..6f967c56911 100644
--- a/s/d_migrate.cpp
+++ b/s/d_migrate.cpp
@@ -551,13 +551,20 @@ namespace mongo {
}
active = false;
}
-
+
void _go(){
assert( active );
assert( state == READY );
assert( ! min.isEmpty() );
assert( ! max.isEmpty() );
+ { // delete any data already in range
+ writelock lk( ns );
+ long long num = Helpers::removeRange( ns , min , max , true );
+ if ( num )
+ log( LL_WARNING ) << "moveChunkCmd deleted data already in chunk # objects: " << num << endl;
+ }
+
ScopedDbConnection conn( from );
conn->getLastError(); // just test connection
@@ -741,8 +748,6 @@ namespace mongo {
migrateStatus.min = cmdObj["min"].Obj().getOwned();
migrateStatus.max = cmdObj["max"].Obj().getOwned();
- // TODO: check data in range currently
-
boost::thread m( migrateThread );
result.appendBool( "started" , true );
diff --git a/shell/servers.js b/shell/servers.js
index 5a08462c91b..b2a19f56c39 100644
--- a/shell/servers.js
+++ b/shell/servers.js
@@ -428,6 +428,27 @@ ShardingTest.prototype.shardCounts = function( collName , dbName ){
return counts;
}
+ShardingTest.prototype.chunkCounts = function( collName , dbName ){
+ dbName = dbName || "test";
+ var x = {}
+
+ s.config.shards.find().forEach(
+ function(z){
+ x[z._id] = 0;
+ }
+ );
+
+ s.config.chunks.find( { ns : dbName + "." + collName } ).forEach(
+ function(z){
+ if ( x[z.shard] )
+ x[z.shard]++
+ else
+ x[z.shard] = 1;
+ }
+ );
+ return x;
+
+}
ShardingTest.prototype.shardGo = function( collName , key , split , move , dbName ){
split = split || key;