redis-client 0.17.1 → 0.19.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3e73c2e13870d3adcb345e544fe99bbffa6ad1bf5f7267203e49f838c56a7492
4
- data.tar.gz: d090544eb97a93ad0d21d5a6c14c40ffb3ca384425ccf27d82c797f0f7e2d35a
3
+ metadata.gz: 920d97dcf258796ba88bb2f087fa89c1595dd245f67292c7432893848baacd0b
4
+ data.tar.gz: 07151d3aa036f7c513e7baa2cc94c22a7f9b4af8a09e132b1943716cd458c408
5
5
  SHA512:
6
- metadata.gz: 60e0fbf2c30888ac05855af2ba6b145ac96e0e011cc58d989f66e9379baa549c9af1ad2f7077ce431b334d6b1318b83463eac7bcb7a323752c79644e0dbce495
7
- data.tar.gz: 1e3e10ef87472a412239261c0642e134f9521e83e49def834bb76b1aa6481c8e8fc9b13cfe1916c0f0ed43af8799a331e9649caa61155ce9eeb8391b0c15c98a
6
+ metadata.gz: a6f664cf2c5fe77115606dc15e031e6bccc55c440b55d521ef5429653acb89bf55597dd4e5cd4892fb61f9452790a2ca41e32e72c6f824c7da9609987b14ff42
7
+ data.tar.gz: c6a34fe93aac6d5ae5c8995881e17581e64a762d0fdc3d3fe1772b07b1759196b2ca5a27e14e00c826399d03a1259f799c816ac1ca1ee001314d9b32f341ecb8
data/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # Unreleased
2
2
 
3
+ # 0.19.1
4
+
5
+ - Fixed a bug in `hiredis-client` that could cause a crash if interrupted by `Timeout.timeout` or other `Thread#raise` based mecanism.
6
+ - Fixed a GC bug that could cause crashes in `hiredis-client`.
7
+
8
+ # 0.19.0
9
+
10
+ - Revalidate connection in `RedisClient#connected?`
11
+ - Eagerly fail if `db:` isn't an Integer. #151.
12
+
13
+ # 0.18.0
14
+
15
+ - Expose more connection details such as `host`, `db`, etc on `RedisClient`.
16
+
3
17
  # 0.17.1
4
18
 
5
19
  - Add support for `NaN` in RESP3 protocol doubles.
data/Gemfile CHANGED
@@ -6,7 +6,7 @@ source "https://rubygems.org"
6
6
  gemspec name: "redis-client"
7
7
 
8
8
  gem "minitest"
9
- gem "rake", "~> 13.0"
9
+ gem "rake", "~> 13.1"
10
10
  gem "rake-compiler"
11
11
  gem "rubocop"
12
12
  gem "rubocop-minitest"
data/Gemfile.lock CHANGED
@@ -1,14 +1,14 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- redis-client (0.17.1)
4
+ redis-client (0.19.1)
5
5
  connection_pool
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
10
  ast (2.4.2)
11
- benchmark-ips (2.12.0)
11
+ benchmark-ips (2.13.0)
12
12
  byebug (11.1.3)
13
13
  connection_pool (2.4.1)
14
14
  hiredis (0.6.3)
@@ -18,7 +18,7 @@ GEM
18
18
  parser (3.1.2.1)
19
19
  ast (~> 2.4.1)
20
20
  rainbow (3.1.1)
21
- rake (13.0.6)
21
+ rake (13.1.0)
22
22
  rake-compiler (1.2.5)
23
23
  rake
24
24
  redis (4.6.0)
@@ -53,7 +53,7 @@ DEPENDENCIES
53
53
  byebug
54
54
  hiredis
55
55
  minitest
56
- rake (~> 13.0)
56
+ rake (~> 13.1)
57
57
  rake-compiler
58
58
  redis (~> 4.6)
59
59
  redis-client!
@@ -41,7 +41,12 @@ class RedisClient
41
41
  )
42
42
  @username = username
43
43
  @password = password
44
- @db = db || DEFAULT_DB
44
+ @db = begin
45
+ Integer(db || DEFAULT_DB)
46
+ rescue ArgumentError
47
+ raise ArgumentError, "db: must be an Integer, got: #{db.inspect}"
48
+ end
49
+
45
50
  @id = id
46
51
  @ssl = ssl || false
47
52
 
@@ -148,6 +148,7 @@ class RedisClient
148
148
  )
149
149
  true
150
150
  rescue SystemCallError, OpenSSL::SSL::SSLError, SocketError => error
151
+ socket&.close
151
152
  raise CannotConnectError, error.message, error.backtrace
152
153
  end
153
154
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class RedisClient
4
- VERSION = "0.17.1"
4
+ VERSION = "0.19.1"
5
5
  end
data/lib/redis_client.rb CHANGED
@@ -179,6 +179,38 @@ class RedisClient
179
179
  config.server_url
180
180
  end
181
181
 
182
+ def id
183
+ config.id
184
+ end
185
+
186
+ def timeout
187
+ config.read_timeout
188
+ end
189
+
190
+ def db
191
+ config.db
192
+ end
193
+
194
+ def host
195
+ config.host unless config.path
196
+ end
197
+
198
+ def port
199
+ config.port unless config.path
200
+ end
201
+
202
+ def path
203
+ config.path
204
+ end
205
+
206
+ def username
207
+ config.username
208
+ end
209
+
210
+ def password
211
+ config.password
212
+ end
213
+
182
214
  def size
183
215
  1
184
216
  end
@@ -190,17 +222,18 @@ class RedisClient
190
222
 
191
223
  def timeout=(timeout)
192
224
  super
193
- raw_connection.read_timeout = raw_connection.write_timeout = timeout if connected?
225
+ @raw_connection&.read_timeout = timeout
226
+ @raw_connection&.write_timeout = timeout
194
227
  end
195
228
 
196
229
  def read_timeout=(timeout)
197
230
  super
198
- raw_connection.read_timeout = timeout if connected?
231
+ @raw_connection&.read_timeout = timeout
199
232
  end
200
233
 
201
234
  def write_timeout=(timeout)
202
235
  super
203
- raw_connection.write_timeout = timeout if connected?
236
+ @raw_connection&.write_timeout = timeout
204
237
  end
205
238
 
206
239
  def pubsub
@@ -354,7 +387,7 @@ class RedisClient
354
387
  end
355
388
 
356
389
  def connected?
357
- @raw_connection&.connected?
390
+ @raw_connection&.revalidate
358
391
  end
359
392
 
360
393
  def close
@@ -637,6 +670,7 @@ class RedisClient
637
670
  elsif retryable
638
671
  tries = 0
639
672
  connection = nil
673
+ preferred_error = nil
640
674
  begin
641
675
  connection = raw_connection
642
676
  if block_given?
@@ -645,13 +679,15 @@ class RedisClient
645
679
  connection
646
680
  end
647
681
  rescue ConnectionError, ProtocolError => error
682
+ preferred_error ||= error
683
+ preferred_error = error unless error.is_a?(CircuitBreaker::OpenCircuitError)
648
684
  close
649
685
 
650
686
  if !@disable_reconnection && config.retry_connecting?(tries, error)
651
687
  tries += 1
652
688
  retry
653
689
  else
654
- raise
690
+ raise preferred_error
655
691
  end
656
692
  end
657
693
  else
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redis-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.17.1
4
+ version: 0.19.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jean Boussier
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-10-22 00:00:00.000000000 Z
11
+ date: 2023-12-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: connection_pool
@@ -77,7 +77,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
77
77
  - !ruby/object:Gem::Version
78
78
  version: '0'
79
79
  requirements: []
80
- rubygems_version: 3.3.7
80
+ rubygems_version: 3.4.10
81
81
  signing_key:
82
82
  specification_version: 4
83
83
  summary: Simple low-level client for Redis 6+