Thanks for the response.
My setup is as follows:
Old servers are a 2-member replica set with an arbiter. The hosts are mongo-01 and mongo-02, the replica set is named "pod_one" and the database name is "foo". Mongo-01 is the primary. db.isMaster() lists mongo-01 and mongo-02 as the hosts.
New servers are a 3-member replica set, no arbiter. The hosts are mongo-03, mongo-04, and mongo-05. Mongo-04 is the primary. The database name is also "foo". This replica set is called "pod_two". db.isMaster() on the primary returns mongo-03, mongo-04, and mongo-05.
Could it be that the assignment of Thread.current[:manager] is being overwritten by the ReplSetConnection to the new database? If I omit the connection to the new replica set, the code functions as it should, which leads me to believe that the bug is in repl_set_connection.rb. In 1.6.2, the line I'm interested in is repl_set_connection.rb:153.