Merge pull request #75 from jmbejar/fix_replset_insert_exception_issue
RUBY-391: raise ConnectionFailure on 'not master' error.
This commit is contained in:
commit
63708a5f16
@ -87,9 +87,13 @@ module Mongo
|
||||
end
|
||||
|
||||
if num_received == 1 && (error = docs[0]['err'] || docs[0]['errmsg'])
|
||||
close if error == "not master"
|
||||
error = "wtimeout" if error == "timeout"
|
||||
raise OperationFailure.new(docs[0]['code'].to_s + ': ' + error, docs[0]['code'], docs[0])
|
||||
if error.include?("not master")
|
||||
close
|
||||
raise ConnectionFailure.new(docs[0]['code'].to_s + ': ' + error, docs[0]['code'], docs[0])
|
||||
else
|
||||
error = "wtimeout" if error == "timeout"
|
||||
raise OperationFailure.new(docs[0]['code'].to_s + ': ' + error, docs[0]['code'], docs[0])
|
||||
end
|
||||
end
|
||||
|
||||
docs[0]
|
||||
|
@ -80,6 +80,23 @@ class ConnectTest < Test::Unit::TestCase
|
||||
end
|
||||
end
|
||||
|
||||
def test_save_with_primary_stepped_down
|
||||
@conn = ReplSetConnection.new([self.rs.host, self.rs.ports[0]], [self.rs.host, self.rs.ports[1]],
|
||||
[self.rs.host, self.rs.ports[2]])
|
||||
|
||||
primary = Mongo::Connection.new(@conn.primary_pool.host, @conn.primary_pool.port)
|
||||
|
||||
# Adding force=true to avoid 'no secondaries within 10 seconds of my optime' errors
|
||||
step_down_command = BSON::OrderedHash.new
|
||||
step_down_command[:replSetStepDown] = 60
|
||||
step_down_command[:force] = true
|
||||
primary['admin'].command(step_down_command)
|
||||
|
||||
rescue_connection_failure do
|
||||
@conn[MONGO_TEST_DB]['bar'].save({:a => 1}, {:safe => {:w => 3}})
|
||||
end
|
||||
end
|
||||
|
||||
def test_connect_with_connection_string
|
||||
@conn = Connection.from_uri("mongodb://#{self.rs.host}:#{self.rs.ports[0]},#{self.rs.host}:#{self.rs.ports[1]}?replicaset=#{self.rs.name}")
|
||||
assert @conn.is_a?(ReplSetConnection)
|
||||
|
Loading…
Reference in New Issue
Block a user