Skip to content

Commit 8bc35a5

Browse files
committed
Fix timeouts in Synchrony driver. Credits: @badboy.
1 parent 53889f0 commit 8bc35a5

File tree

1 file changed

+8
-1
lines changed

1 file changed

+8
-1
lines changed

lib/redis/connection/synchrony.rb

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ module Connection
99
class RedisClient < EventMachine::Connection
1010
include EventMachine::Deferrable
1111

12+
attr_accessor :timeout
13+
1214
def post_init
1315
@req = nil
1416
@connected = false
@@ -44,6 +46,9 @@ def receive_data(data)
4446

4547
def read
4648
@req = EventMachine::DefaultDeferrable.new
49+
if @timeout > 0
50+
@req.timeout(@timeout, :timeout)
51+
end
4752
EventMachine::Synchrony.sync @req
4853
end
4954

@@ -96,7 +101,7 @@ def connected?
96101
end
97102

98103
def timeout=(timeout)
99-
@timeout = timeout
104+
@connection.timeout = timeout
100105
end
101106

102107
def disconnect
@@ -115,6 +120,8 @@ def read
115120
payload
116121
elsif type == :error
117122
raise payload
123+
elsif type == :timeout
124+
raise TimeoutError
118125
else
119126
raise "Unknown type #{type.inspect}"
120127
end

0 commit comments

Comments
 (0)