Strange thing about mongodb-erlang driver when using replica set -


my code this:

replset = {<<"rs1">>, [{localhost, 27017}, {localhost, 27018}, {localhost, 27019}]},   conn_pool = resource_pool:new (mongo:rs_connect_factory(replset), 10),   ...    conn = resource_pool:get(conn_pool)   case mongo:do(safe, master, conn, ?database,     fun() ->      mongo:insert(mytable, {'_id', 26, d, 11})   end end)   ... 

27017 primary node, ofc can insert data successfully.

but, when put 1 secondary node in code instead of of mongo rs instances: replset = {<<"rs1">>, [{localhost, 27019}]}, can insert data.

i thought should have thrown exception or error, had written data successfully.

why happened?

when connect replica set, specify name of replset , of node names seeds. driver connects seed nodes in turn , discovers real replica set membership/config/status via 'db.ismaster()' command.

since discovers node primary way, able route write requests accordingly. same technique enables automatically failover newly elected primary when original primary fails , new 1 elected.


Comments

Popular posts from this blog

.htaccess - First slash is removed after domain when entering a webpage in the browser -

Automatically create pages in phpfox -

c# - Farseer ContactListener is not working -