@@ -317,9 +317,9 @@ def establish_connection
317
317
server = @connector . resolve . dup
318
318
319
319
@options [ :host ] = server [ :host ]
320
- @options [ :port ] = server [ :port ]
320
+ @options [ :port ] = Integer ( server [ :port ] )
321
321
322
- @connection = @options [ :driver ] . connect ( server )
322
+ @connection = @options [ :driver ] . connect ( @options )
323
323
@pending_reads = 0
324
324
rescue TimeoutError ,
325
325
Errno ::ECONNREFUSED ,
@@ -470,7 +470,7 @@ def _parse_driver(driver)
470
470
471
471
class Connector
472
472
def initialize ( options )
473
- @options = options
473
+ @options = options . dup
474
474
end
475
475
476
476
def resolve
@@ -484,9 +484,9 @@ class Sentinel < Connector
484
484
def initialize ( options )
485
485
super ( options )
486
486
487
- @sentinels = options . fetch ( :sentinels ) . dup
488
- @role = options . fetch ( :role , "master" ) . to_s
489
- @master = options [ :host ]
487
+ @sentinels = @ options. delete ( :sentinels ) . dup
488
+ @role = @ options. fetch ( :role , "master" ) . to_s
489
+ @master = @ options[ :host ]
490
490
end
491
491
492
492
def check ( client )
@@ -521,7 +521,10 @@ def resolve
521
521
522
522
def sentinel_detect
523
523
@sentinels . each do |sentinel |
524
- client = Client . new ( :host => sentinel [ :host ] , :port => sentinel [ :port ] , :timeout => 0.3 )
524
+ client = Client . new ( @options . merge ( {
525
+ :host => sentinel [ :host ] ,
526
+ :port => sentinel [ :port ]
527
+ } ) )
525
528
526
529
begin
527
530
if result = yield ( client )
0 commit comments