diff options
author | Antonin Kral <a.kral@bobek.cz> | 2011-12-15 09:35:47 +0100 |
---|---|---|
committer | Antonin Kral <a.kral@bobek.cz> | 2011-12-15 09:35:47 +0100 |
commit | f0d9a01bccdaeb466c12c92057914bbfef59526c (patch) | |
tree | 7679efa1f0daf7d1d906882a15dc77af6b7aef32 /s/shard.cpp | |
parent | 5d342a758c6095b4d30aba0750b54f13b8916f51 (diff) | |
download | mongodb-f0d9a01bccdaeb466c12c92057914bbfef59526c.tar.gz |
Imported Upstream version 2.0.2
Diffstat (limited to 's/shard.cpp')
-rw-r--r-- | s/shard.cpp | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/s/shard.cpp b/s/shard.cpp index 75326e0..7d06a31 100644 --- a/s/shard.cpp +++ b/s/shard.cpp @@ -365,12 +365,26 @@ namespace mongo { conn->auth("local", internalSecurity.user, internalSecurity.pwd, err, false)); } - if ( _shardedConnections ) { - conn->simpleCommand( "admin" , 0 , "setShardVersion" ); + if ( _shardedConnections && isVersionableCB( conn ) ) { + + // We must initialize sharding on all connections, so that we get exceptions if sharding is enabled on + // the collection. + BSONObj result; + bool ok = initShardVersionCB( *conn, result ); + + // assert that we actually successfully setup sharding + uassert( 15907, str::stream() << "could not initialize sharding on connection " << (*conn).toString() << + ( result["errmsg"].type() == String ? causedBy( result["errmsg"].String() ) : + causedBy( (string)"unknown failure : " + result.toString() ) ), ok ); + } } - void ShardingConnectionHook::onDestory( DBClientBase * conn ) { - resetShardVersionCB( conn ); + void ShardingConnectionHook::onDestroy( DBClientBase * conn ) { + + if( _shardedConnections && isVersionableCB( conn ) ){ + resetShardVersionCB( conn ); + } + } } |