diff options
author | Alberto Lerner <alerner@10gen.com> | 2010-07-21 16:31:51 -0400 |
---|---|---|
committer | Alberto Lerner <alerner@10gen.com> | 2010-07-21 16:31:51 -0400 |
commit | db947047b0231997b0be6ea74ec77f109a2b4fe2 (patch) | |
tree | 72e8bd8f9319f4d894c595807639660011f8ed0d /s/config.cpp | |
parent | 455e206f7808822ae8f20ad4a567efcfca44d74f (diff) | |
download | mongo-db947047b0231997b0be6ea74ec77f109a2b4fe2.tar.gz |
SERVER-1418 Shard names now use padding zeroes
Diffstat (limited to 's/config.cpp')
-rw-r--r-- | s/config.cpp | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/s/config.cpp b/s/config.cpp index 30d4ba03a4c..de023060db1 100644 --- a/s/config.cpp +++ b/s/config.cpp @@ -337,13 +337,34 @@ namespace mongo { /* --- Grid --- */ - bool Grid::knowAboutShard( string name ) const{ + bool Grid::knowAboutShard( const string& name ) const{ ShardConnection conn( configServer.getPrimary() , "" ); - BSONObj shard = conn->findOne( "config.shards" , BSON( "host" << name ) ); + BSONObj shard = conn->findOne( ShardNS::shard , BSON( "host" << name ) ); conn.done(); return ! shard.isEmpty(); } + string Grid::getNewShardName() const{ + ShardConnection conn( configServer.getPrimary() , "" ); + + string shardName; + int count = 0; + BSONObj o = conn->findOne( ShardNS::shard , Query( fromjson ( "{_id: /^shard/}" ) ).sort( BSON( "_id" << -1 ) ) ); + if ( ! o.isEmpty() ) { + string last = o["_id"].String(); + istringstream is( last.substr( 5 ) ); + is >> count; + count++; + } + if (count < 9999) { + stringstream ss; + ss << "shard" << setfill('0') << setw(4) << count; + shardName = ss.str(); + } + conn.done(); + return shardName; + } + DBConfigPtr Grid::getDBConfig( string database , bool create ){ { string::size_type i = database.find( "." ); |