diff options
author | Randolph Tan <randolph@10gen.com> | 2014-03-10 11:52:00 -0400 |
---|---|---|
committer | Randolph Tan <randolph@10gen.com> | 2014-03-11 15:27:50 -0400 |
commit | 1ceeb84bd0b170bb367e8f78be53d2f075007cb5 (patch) | |
tree | a6b8d8b236404e32b0873e1910308493732bfa18 | |
parent | b9fa2dac50c915eda3d8547e99e52ce3e6764bf6 (diff) | |
download | mongo-1ceeb84bd0b170bb367e8f78be53d2f075007cb5.tar.gz |
SERVER-12515 Unable to move hashed shard key chunks created by numInitialChunks
Backport fix for commit 3a08be3bf2a1a650c97543a448a8ea0c143a89b6
-rw-r--r-- | src/mongo/dbtests/d_chunk_manager_tests.cpp | 14 | ||||
-rw-r--r-- | src/mongo/s/d_chunk_manager.cpp | 2 |
2 files changed, 15 insertions, 1 deletions
diff --git a/src/mongo/dbtests/d_chunk_manager_tests.cpp b/src/mongo/dbtests/d_chunk_manager_tests.cpp index e50961d3ee7..be7639f5794 100644 --- a/src/mongo/dbtests/d_chunk_manager_tests.cpp +++ b/src/mongo/dbtests/d_chunk_manager_tests.cpp @@ -362,6 +362,20 @@ namespace { ASSERT( cloned->belongsToMe( split1 ) ); ASSERT( cloned->belongsToMe( split2 ) ); ASSERT( ! cloned->belongsToMe( max ) ); + + ASSERT_FALSE( cloned->getNextChunk( BSON( "a" << MinKey << "b" << 0 ), &min, &max )); + ASSERT_EQUALS( BSON( "a" << 10 << "b" << 0 ), min ); + ASSERT_EQUALS( BSON( "a" << 15 << "b" << 0 ), max ); + + ASSERT_FALSE( cloned->getNextChunk( BSON( "a" << 10 << "b" << 0 ), &min, &max )); + ASSERT_EQUALS( BSON( "a" << 15 << "b" << 0 ), min ); + ASSERT_EQUALS( BSON( "a" << 18 << "b" << 0 ), max ); + + ASSERT_FALSE( cloned->getNextChunk( BSON( "a" << 15 << "b" << 0 ), &min, &max )); + ASSERT_EQUALS( BSON( "a" << 18 << "b" << 0 ), min ); + ASSERT_EQUALS( BSON( "a" << 20 << "b" << 0 ), max ); + + ASSERT( cloned->getNextChunk( BSON( "a" << 18 << "b" << 0 ), &min, &max )); } }; diff --git a/src/mongo/s/d_chunk_manager.cpp b/src/mongo/s/d_chunk_manager.cpp index 4eb360702bc..98a6d90d341 100644 --- a/src/mongo/s/d_chunk_manager.cpp +++ b/src/mongo/s/d_chunk_manager.cpp @@ -426,7 +426,7 @@ namespace mongo { BSONObj startKey = min; for ( vector<BSONObj>::const_iterator it = splitKeys.begin() ; it != splitKeys.end() ; ++it ) { BSONObj split = *it; - p->_chunksMap[min] = split.getOwned(); + p->_chunksMap[startKey] = split.getOwned(); p->_chunksMap.insert( make_pair( split.getOwned() , max.getOwned() ) ); p->_version.incMinor(); startKey = split; |