From ac897e55e794febdef65c88059e44a54a60b4b3d Mon Sep 17 00:00:00 2001 From: Eliot Horowitz Date: Wed, 27 Oct 2010 14:13:09 -0400 Subject: [PATCH] testmaster for single servers on creation JAVA-187 --- src/main/com/mongodb/DBTCPConnector.java | 13 +++++++++++++ src/main/com/mongodb/Mongo.java | 5 ++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/main/com/mongodb/DBTCPConnector.java b/src/main/com/mongodb/DBTCPConnector.java index 27fa6b4986b..64a0a39ef1f 100644 --- a/src/main/com/mongodb/DBTCPConnector.java +++ b/src/main/com/mongodb/DBTCPConnector.java @@ -345,6 +345,19 @@ void checkMaster( boolean force , boolean failIfNoMaster ) } } + void testMaster() + throws MongoException { + + DBPort p = null; + try { + p = _curPortPool.get(); + p.runCommand( "admin" , new BasicDBObject( "nonce" , 1 ) ); + } + finally { + _curPortPool.done( p ); + } + } + private boolean _set( ServerAddress addr ){ if ( _curMaster == addr ) return false; diff --git a/src/main/com/mongodb/Mongo.java b/src/main/com/mongodb/Mongo.java index f0515d27b03..f3c0fb4bdc0 100644 --- a/src/main/com/mongodb/Mongo.java +++ b/src/main/com/mongodb/Mongo.java @@ -138,6 +138,7 @@ public Mongo( ServerAddress addr , MongoOptions options ) _options = options; _connector = new DBTCPConnector( this , _addr ); _connector.checkMaster( true , true ); + _connector.testMaster(); } /** @@ -162,6 +163,7 @@ public Mongo( ServerAddress left , ServerAddress right , MongoOptions options ) _options = options; _connector = new DBTCPConnector( this , _addrs ); _connector.checkMaster( true , false ); + _connector.testMaster(); } /** @@ -199,6 +201,7 @@ public Mongo( MongoURI uri ) _addr = new ServerAddress( uri.getHosts().get(0) ); _addrs = null; _connector = new DBTCPConnector( this , _addr ); + _connector.testMaster(); } else { List replicaSetSeeds = new ArrayList( uri.getHosts().size() ); @@ -207,9 +210,9 @@ public Mongo( MongoURI uri ) _addr = null; _addrs = replicaSetSeeds; _connector = new DBTCPConnector( this , replicaSetSeeds ); + _connector.checkMaster( true , true ); } - _connector.checkMaster( true , true ); } public DB getDB( String dbname ){