redis-cluster-client 0.0.11 → 0.0.12

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: d7c3e9a3b764d9e5fc52670d17c175ee9ccda2dcd56b4a977b0e9a1e0b71d972
4
- data.tar.gz: 191e1fe163f6f2fd111e4b2f69638aa28462d74e002f1ff0a11fc0f52cc740cd
3
+ metadata.gz: 2aec24d7a41cc222cf5fdec13b063d0ce2a68df59c05049a4719f71b6ac07391
4
+ data.tar.gz: 00b0eebd7da92305fbf2512f660721ad0976cfb1e33fb72037a673fe65899ce1
5
5
  SHA512:
6
- metadata.gz: a42c6a871302686e33026ed570575d5b51637b707501609fdf9e574a5a976e06af388bc69bebd5bb22a58a30741c4b3e43d883d154782675446ce88c49ac2b37
7
- data.tar.gz: e2ae0a6dd3af75407cc4d795492afff75e5bc7c01fee84be2ef0761e67dda0d9f93cc103b99219bd1b5e8df9dc3ff1dc86b3406c3a23dc1d011b649c363ab163
6
+ metadata.gz: 28d31d104bd1f2100c0f61c765783e86fea745910c748510bdc7b4985f779df4e8d8240a38afc043504cc36ad33a00273288762defcdcd03e7486cece5351882
7
+ data.tar.gz: 82a6c2b2e786f27183cc000ca202e4d6bf29b6260dc00a2659eb18660e6e4b3d60946d170606938242dc9340b4ae644aaa15de7369c23e2f9cda0c2bab604fe8
@@ -23,7 +23,7 @@ class RedisClient
23
23
  @mutex = Mutex.new
24
24
  end
25
25
 
26
- def send_command(method, *args, **kwargs, &block) # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength
26
+ def send_command(method, *args, **kwargs, &block) # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength, Metrics/PerceivedComplexity
27
27
  command = method == :blocking_call && args.size > 1 ? args[1..] : args
28
28
 
29
29
  cmd = command.first.to_s.downcase
@@ -34,10 +34,10 @@ class RedisClient
34
34
  @node.call_primaries(method, *args, **kwargs, &block).first
35
35
  when 'ping' then @node.send_ping(method, *args, **kwargs, &block).first
36
36
  when 'wait' then send_wait_command(method, *args, **kwargs, &block)
37
- when 'keys' then @node.call_replicas(method, *args, **kwargs, &block).flatten.sort
38
- when 'dbsize' then @node.call_replicas(method, *args, **kwargs, &block).sum
37
+ when 'keys' then @node.call_replicas(method, *args, **kwargs, &block).flatten.sort_by(&:to_s)
38
+ when 'dbsize' then @node.call_replicas(method, *args, **kwargs, &block).select { |e| e.is_a?(Integer) }.sum
39
39
  when 'scan' then scan(*command, **kwargs)
40
- when 'lastsave' then @node.call_all(method, *args, **kwargs, &block).sort
40
+ when 'lastsave' then @node.call_all(method, *args, **kwargs, &block).sort_by(&:to_i)
41
41
  when 'role' then @node.call_all(method, *args, **kwargs, &block)
42
42
  when 'config' then send_config_command(method, *args, **kwargs, &block)
43
43
  when 'client' then send_client_command(method, *args, **kwargs, &block)
@@ -56,6 +56,11 @@ class RedisClient
56
56
  rescue ::RedisClient::Cluster::Node::ReloadNeeded
57
57
  update_cluster_info!
58
58
  raise ::RedisClient::Cluster::NodeMightBeDown
59
+ rescue ::RedisClient::Cluster::ErrorCollection => e
60
+ update_cluster_info! if e.errors.values.any? do |err|
61
+ err.message.start_with?('CLUSTERDOWN Hash slot not served')
62
+ end
63
+ raise
59
64
  end
60
65
 
61
66
  # @see https://redis.io/topics/cluster-spec#redirection-and-resharding
@@ -74,6 +79,10 @@ class RedisClient
74
79
  node.call('ASKING')
75
80
  retry_count -= 1
76
81
  retry
82
+ elsif e.message.start_with?('CLUSTERDOWN Hash slot not served')
83
+ update_cluster_info!
84
+ retry_count -= 1
85
+ retry
77
86
  else
78
87
  raise
79
88
  end
@@ -212,11 +221,11 @@ class RedisClient
212
221
  command = method == :blocking_call && args.size > 1 ? args[1..] : args
213
222
 
214
223
  case command[1].to_s.downcase
215
- when 'channels' then @node.call_all(method, *args, **kwargs, &block).flatten.uniq.sort
224
+ when 'channels' then @node.call_all(method, *args, **kwargs, &block).flatten.uniq.sort_by(&:to_s)
216
225
  when 'numsub'
217
226
  @node.call_all(method, *args, **kwargs, &block).reject(&:empty?).map { |e| Hash[*e] }
218
227
  .reduce({}) { |a, e| a.merge(e) { |_, v1, v2| v1 + v2 } }
219
- when 'numpat' then @node.call_all(method, *args, **kwargs, &block).sum
228
+ when 'numpat' then @node.call_all(method, *args, **kwargs, &block).select { |e| e.is_a?(Integer) }.sum
220
229
  else assign_node(*command).send(method, *args, **kwargs, &block)
221
230
  end
222
231
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redis-cluster-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.11
4
+ version: 0.0.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Taishi Kasuga
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-06-27 00:00:00.000000000 Z
11
+ date: 2022-07-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: redis-client