summaryrefslogtreecommitdiff
path: root/s/config.cpp
diff options
context:
space:
mode:
authorAlberto Lerner <alerner@10gen.com>2010-07-21 16:31:51 -0400
committerAlberto Lerner <alerner@10gen.com>2010-07-21 16:31:51 -0400
commitdb947047b0231997b0be6ea74ec77f109a2b4fe2 (patch)
tree72e8bd8f9319f4d894c595807639660011f8ed0d /s/config.cpp
parent455e206f7808822ae8f20ad4a567efcfca44d74f (diff)
downloadmongo-db947047b0231997b0be6ea74ec77f109a2b4fe2.tar.gz
SERVER-1418 Shard names now use padding zeroes
Diffstat (limited to 's/config.cpp')
-rw-r--r--s/config.cpp25
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( "." );