summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGreg Studer <greg@10gen.com>2013-01-09 16:58:25 -0500
committerGreg Studer <greg@10gen.com>2013-01-09 16:58:25 -0500
commitbaaa9118f92d31e6ad400acd0a1e7d9b37ea5d93 (patch)
tree87532a9e951164726b9d41c587e621066a960fb5
parent0a6bac4569c92c7ef92cb4b66f5ec0797b1334af (diff)
downloadmongo-baaa9118f92d31e6ad400acd0a1e7d9b37ea5d93.tar.gz
SERVER-8128 require a database be specified for ShardConnection::sync()
-rw-r--r--src/mongo/s/chunk.cpp3
-rw-r--r--src/mongo/s/commands_admin.cpp12
-rw-r--r--src/mongo/s/shard.h2
-rw-r--r--src/mongo/s/shardconnection.cpp8
4 files changed, 14 insertions, 11 deletions
diff --git a/src/mongo/s/chunk.cpp b/src/mongo/s/chunk.cpp
index 773978014dc..69a49031f82 100644
--- a/src/mongo/s/chunk.cpp
+++ b/src/mongo/s/chunk.cpp
@@ -23,6 +23,7 @@
#include "../util/startup_test.h"
#include "../util/timer.h"
#include "mongo/client/dbclientcursor.h"
+#include "mongo/db/namespacestring.h"
#include "chunk.h"
#include "chunk_diff.h"
@@ -364,7 +365,7 @@ namespace mongo {
// this does mean mongos has more back pressure than mongod alone
// since it nots 100% tcp queue bound
// this was implicit before since we did a splitVector on the same socket
- ShardConnection::sync();
+ ShardConnection::sync( NamespaceString(getManager()->getns()).db );
LOG(1) << "about to initiate autosplit: " << *this << " dataWritten: " << _dataWritten << " splitThreshold: " << splitThreshold << endl;
diff --git a/src/mongo/s/commands_admin.cpp b/src/mongo/s/commands_admin.cpp
index c155e25066d..cd5aaaa69a2 100644
--- a/src/mongo/s/commands_admin.cpp
+++ b/src/mongo/s/commands_admin.cpp
@@ -35,6 +35,7 @@
#include "../client/connpool.h"
#include "mongo/client/dbclientcursor.h"
+#include "mongo/db/namespacestring.h"
#include "../db/dbmessage.h"
#include "../db/commands.h"
@@ -712,14 +713,14 @@ namespace mongo {
if ( ! okForConfigChanges( errmsg ) )
return false;
- ShardConnection::sync();
-
string ns = cmdObj.firstElement().valuestrsafe();
if ( ns.size() == 0 ) {
errmsg = "no ns";
return false;
}
+ ShardConnection::sync( NamespaceString(ns).db );
+
DBConfigPtr config = grid.getDBConfig( ns );
if ( ! config->isSharded( ns ) ) {
config->reload();
@@ -794,15 +795,16 @@ namespace mongo {
if ( ! okForConfigChanges( errmsg ) )
return false;
- ShardConnection::sync();
-
- Timer t;
string ns = cmdObj.firstElement().valuestrsafe();
if ( ns.size() == 0 ) {
errmsg = "no ns";
return false;
}
+ ShardConnection::sync( NamespaceString(ns).db );
+
+ Timer t;
+
DBConfigPtr config = grid.getDBConfig( ns );
if ( ! config->isSharded( ns ) ) {
config->reload();
diff --git a/src/mongo/s/shard.h b/src/mongo/s/shard.h
index 7a7e0d8fbda..ccb76a923a0 100644
--- a/src/mongo/s/shard.h
+++ b/src/mongo/s/shard.h
@@ -267,7 +267,7 @@ namespace mongo {
return _setVersion;
}
- static void sync();
+ static void sync( const string& db );
void donotCheckVersion() {
_setVersion = false;
diff --git a/src/mongo/s/shardconnection.cpp b/src/mongo/s/shardconnection.cpp
index 0c9019bb7bc..a3afaf64dbd 100644
--- a/src/mongo/s/shardconnection.cpp
+++ b/src/mongo/s/shardconnection.cpp
@@ -98,12 +98,12 @@ namespace mongo {
s->avail = conn;
}
- void sync() {
+ void sync( const string& db ) {
for ( HostMap::iterator i=_hosts.begin(); i!=_hosts.end(); ++i ) {
string addr = i->first;
Status* ss = i->second;
if ( ss->avail )
- ss->avail->getLastError();
+ ss->avail->getLastError(db);
}
}
@@ -221,8 +221,8 @@ namespace mongo {
}
}
- void ShardConnection::sync() {
- ClientConnections::threadInstance()->sync();
+ void ShardConnection::sync( const string& db ) {
+ ClientConnections::threadInstance()->sync(db);
}
bool ShardConnection::runCommand( const string& db , const BSONObj& cmd , BSONObj& res ) {