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
|
end
|
||||||
|
|
||||||
if num_received == 1 && (error = docs[0]['err'] || docs[0]['errmsg'])
|
if num_received == 1 && (error = docs[0]['err'] || docs[0]['errmsg'])
|
||||||
close if error == "not master"
|
if error.include?("not master")
|
||||||
error = "wtimeout" if error == "timeout"
|
close
|
||||||
raise OperationFailure.new(docs[0]['code'].to_s + ': ' + error, docs[0]['code'], docs[0])
|
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
|
end
|
||||||
|
|
||||||
docs[0]
|
docs[0]
|
||||||
|
|
|
@ -80,6 +80,23 @@ class ConnectTest < Test::Unit::TestCase
|
||||||
end
|
end
|
||||||
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
|
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}")
|
@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)
|
assert @conn.is_a?(ReplSetConnection)
|
||||||
|
|
Loading…
Reference in New Issue