Hey Jeff,
Thanks for the response. I wasn't so much "complaining" about the stickiness but rather the fact that if I specify multiple mongos addresses, I don't get to specify a preferred one which in my case would be localhost.
And on the same topic, I'm very confused with the following behavior: I'm initializing the Mongo instance (Java object) with the following options:
2013-10-24 21:30:35,906 [http-8080-exec-6] INFO Mongo{authority=MongoAuthority{type=Set, serverAddresses=[localhost/127.0.0.1:27027, HOST1/10.149.12.79:27027, HOST2/10.154.149.70:27027, HOST3/10.158.33.16:27027], credentials={credentials={}}}, options=MongoOptions{description='null', connectionsPerHost=40, threadsAllowedToBlockForConnectionMultiplier=5, maxWaitTime=10000, connectTimeout=10000, socketTimeout=30000, socketKeepAlive=false, autoConnectRetry=false, maxAutoConnectRetryTime=0, slaveOk=false, readPreference=secondaryPreferred : { "tags" : [ { "aws-az" : "us-east-1e"}]}, dbDecoderFactory=DefaultDBDecoder.DefaultFactory, dbEncoderFactory=DefaultDBEncoder.DefaultFactory, safe=false, w=0, wtimeout=0, fsync=false, j=false, socketFactory=javax.net.DefaultSocketFactory@20c66135, cursorFinalizerEnabled=true, writeConcern=WriteConcern { "getlasterror" : 1} / (Continue Inserting on Errors? false), alwaysUseMBeans=false}}
HOST1, HOST2 and HOST3 are dead when I start due to a bad config. And I get the following error:
com.mongodb.MongoException: can't find a master
at com.mongodb.DBTCPConnector.checkMaster(DBTCPConnector.java:517)
at com.mongodb.DBTCPConnector.say(DBTCPConnector.java:134)
at com.mongodb.DBTCPConnector.say(DBTCPConnector.java:115)
at com.mongodb.DBApiLayer$MyCollection.insert(DBApiLayer.java:248)
If I start with the following options:
2013-10-24 21:43:13,608 [http-8080-exec-19] INFO Mongo{authority=MongoAuthority{type=Set, serverAddresses=[localhost/127.0.0.1:27027], credentials={credentials={}}}, options=MongoOptions{description='null', connectionsPerHost=40, threadsAllowedToBlockForConnectionMultiplier=5, maxWaitTime=10000, connectTimeout=10000, socketTimeout=30000, socketKeepAlive=false, autoConnectRetry=false, maxAutoConnectRetryTime=0, slaveOk=false, readPreference=secondaryPreferred : { "tags" : [ { "aws-az" : "us-east-1e"}]}, dbDecoderFactory=DefaultDBDecoder.DefaultFactory, dbEncoderFactory=DefaultDBEncoder.DefaultFactory, safe=false, w=0, wtimeout=0, fsync=false, j=false, socketFactory=javax.net.DefaultSocketFactory@2cc29d3d, cursorFinalizerEnabled=true, writeConcern=WriteConcern { "getlasterror" : 1} / (Continue Inserting on Errors? false), alwaysUseMBeans=false}}
Then it starts fine. It's as if it ignored the localhost entry in the first case. I can reproduce this at will. Is this a bug or am I missing something?
Gui