redis-cluster-client 0.0.8 → 0.0.9

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: d13300ba8c7f294d3e4c86932d13775ad22060c172900c01d521b1ed8c2278d6
4
- data.tar.gz: d5b457978bb312a718ba57b48b56fac1ceb07a463889835c8190794007ecbf7d
3
+ metadata.gz: 032431ff16773725b9cb68482bc5df78affdf23e66b6bbd91b6ddbabdd9da921
4
+ data.tar.gz: dc789f59f6509e35ab23df03a70867b5e8414ee3bb327462fbcd5d63be4c6744
5
5
  SHA512:
6
- metadata.gz: 37fb06428eed5a9cca5b42d27c034f057dd7d6f0c5d0c17e4b42c60a8fa3711127c5ed81f06e0565331f64aa762ccc30ee6674fb541e56a8b322ee50ab7a75ce
7
- data.tar.gz: 06d46f93c8c7b7116378d2ef9e4380ccce3aac74c071b709cbacd677ec0b302302b52160c04b2c3523771f69446b96d84e8b4f729765073386c5e5f1f3f27f5b
6
+ metadata.gz: 6013ff65d8dc06b776b7b201244d75eaf62993368f5285d823472f78bec2c81639734f23c32793bc1b8d1981905e5794e35e4e353696d70f1d66930434e6104f
7
+ data.tar.gz: 0e1dc5f17a9706c2fc64bdd03e74ee457f9b9aea81740cdeb5459bd9bbc769b6353047b64ef008b6d34b950fbc7cb8cf57e66c9deb41d33edbacaba78ca2a12e
@@ -129,9 +129,9 @@ class RedisClient
129
129
  @clients.fetch(node_key)
130
130
  end
131
131
 
132
- def call_all(method, *command, **kwargs, &block)
132
+ def call_all(method, *args, **kwargs, &block)
133
133
  results, errors = try_map do |_, client|
134
- client.send(method, *command, **kwargs, &block)
134
+ client.send(method, *args, **kwargs, &block)
135
135
  end
136
136
 
137
137
  return results.values if errors.empty?
@@ -139,11 +139,11 @@ class RedisClient
139
139
  raise ::RedisClient::Cluster::ErrorCollection, errors
140
140
  end
141
141
 
142
- def call_primaries(method, *command, **kwargs, &block)
142
+ def call_primaries(method, *args, **kwargs, &block)
143
143
  results, errors = try_map do |node_key, client|
144
144
  next if replica?(node_key)
145
145
 
146
- client.send(method, *command, **kwargs, &block)
146
+ client.send(method, *args, **kwargs, &block)
147
147
  end
148
148
 
149
149
  return results.values if errors.empty?
@@ -151,14 +151,14 @@ class RedisClient
151
151
  raise ::RedisClient::Cluster::ErrorCollection, errors
152
152
  end
153
153
 
154
- def call_replicas(method, *command, **kwargs, &block)
155
- return call_primaries(method, *command, **kwargs, &block) if replica_disabled?
154
+ def call_replicas(method, *args, **kwargs, &block)
155
+ return call_primaries(method, *args, **kwargs, &block) if replica_disabled?
156
156
 
157
157
  replica_node_keys = @replications.values.map(&:sample)
158
158
  results, errors = try_map do |node_key, client|
159
159
  next if primary?(node_key) || !replica_node_keys.include?(node_key)
160
160
 
161
- client.send(method, *command, **kwargs, &block)
161
+ client.send(method, *args, **kwargs, &block)
162
162
  end
163
163
 
164
164
  return results.values if errors.empty?
@@ -166,9 +166,9 @@ class RedisClient
166
166
  raise ::RedisClient::Cluster::ErrorCollection, errors
167
167
  end
168
168
 
169
- def send_ping(method, *command, **kwargs, &block)
169
+ def send_ping(method, *args, **kwargs, &block)
170
170
  results, errors = try_map do |_, client|
171
- client.send(method, *command, **kwargs, &block)
171
+ client.send(method, *args, **kwargs, &block)
172
172
  end
173
173
 
174
174
  return results.values if errors.empty?
@@ -127,8 +127,7 @@ class RedisClient
127
127
  end
128
128
 
129
129
  def blocking_call(timeout, *command, **kwargs)
130
- node = assign_node(*command)
131
- try_send(node, :blocking_call, timeout, *command, **kwargs)
130
+ send_command(:blocking_call, timeout, *command, **kwargs)
132
131
  end
133
132
 
134
133
  def scan(*args, **kwargs, &block)
@@ -186,41 +185,43 @@ class RedisClient
186
185
  node_info: node_info, pool: pool, with_replica: config.use_replica?, **kwargs)
187
186
  end
188
187
 
189
- def send_command(method, *command, **kwargs, &block) # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength
188
+ def send_command(method, *args, **kwargs, &block) # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength
189
+ command = method == :blocking_call && args.size > 1 ? args[1..] : args
190
+
190
191
  cmd = command.first.to_s.downcase
191
192
  case cmd
192
193
  when 'acl', 'auth', 'bgrewriteaof', 'bgsave', 'quit', 'save'
193
- @node.call_all(method, *command, **kwargs, &block).first
194
+ @node.call_all(method, *args, **kwargs, &block).first
194
195
  when 'flushall', 'flushdb'
195
- @node.call_primaries(method, *command, **kwargs, &block).first
196
- when 'ping' then @node.send_ping(method, *command, **kwargs, &block).first
197
- when 'wait' then send_wait_command(method, *command, **kwargs, &block)
198
- when 'keys' then @node.call_replicas(method, *command, **kwargs, &block).flatten.sort
199
- when 'dbsize' then @node.call_replicas(method, *command, **kwargs, &block).sum
196
+ @node.call_primaries(method, *args, **kwargs, &block).first
197
+ when 'ping' then @node.send_ping(method, *args, **kwargs, &block).first
198
+ when 'wait' then send_wait_command(method, *args, **kwargs, &block)
199
+ when 'keys' then @node.call_replicas(method, *args, **kwargs, &block).flatten.sort
200
+ when 'dbsize' then @node.call_replicas(method, *args, **kwargs, &block).sum
200
201
  when 'scan' then _scan(*command, **kwargs)
201
- when 'lastsave' then @node.call_all(method, *command, **kwargs, &block).sort
202
- when 'role' then @node.call_all(method, *command, **kwargs, &block)
203
- when 'config' then send_config_command(method, *command, **kwargs, &block)
204
- when 'client' then send_client_command(method, *command, **kwargs, &block)
205
- when 'cluster' then send_cluster_command(method, *command, **kwargs, &block)
202
+ when 'lastsave' then @node.call_all(method, *args, **kwargs, &block).sort
203
+ when 'role' then @node.call_all(method, *args, **kwargs, &block)
204
+ when 'config' then send_config_command(method, *args, **kwargs, &block)
205
+ when 'client' then send_client_command(method, *args, **kwargs, &block)
206
+ when 'cluster' then send_cluster_command(method, *args, **kwargs, &block)
206
207
  when 'readonly', 'readwrite', 'shutdown'
207
208
  raise ::RedisClient::Cluster::OrchestrationCommandNotSupported, cmd
208
- when 'memory' then send_memory_command(method, *command, **kwargs, &block)
209
- when 'script' then send_script_command(method, *command, **kwargs, &block)
210
- when 'pubsub' then send_pubsub_command(method, *command, **kwargs, &block)
209
+ when 'memory' then send_memory_command(method, *args, **kwargs, &block)
210
+ when 'script' then send_script_command(method, *args, **kwargs, &block)
211
+ when 'pubsub' then send_pubsub_command(method, *args, **kwargs, &block)
211
212
  when 'discard', 'exec', 'multi', 'unwatch'
212
213
  raise ::RedisClient::Cluster::AmbiguousNodeError, cmd
213
214
  else
214
215
  node = assign_node(*command)
215
- try_send(node, method, *command, **kwargs, &block)
216
+ try_send(node, method, *args, **kwargs, &block)
216
217
  end
217
218
  rescue RedisClient::Cluster::Node::ReloadNeeded
218
219
  update_cluster_info!
219
220
  raise ::RedisClient::Cluster::NodeMightBeDown
220
221
  end
221
222
 
222
- def send_wait_command(method, *command, retry_count: 3, **kwargs, &block)
223
- @node.call_primaries(method, *command, **kwargs, &block).sum
223
+ def send_wait_command(method, *args, retry_count: 3, **kwargs, &block)
224
+ @node.call_primaries(method, *args, **kwargs, &block).sum
224
225
  rescue RedisClient::Cluster::ErrorCollection => e
225
226
  raise if retry_count <= 0
226
227
  raise if e.errors.values.none? do |err|
@@ -232,64 +233,76 @@ class RedisClient
232
233
  retry
233
234
  end
234
235
 
235
- def send_config_command(method, *command, **kwargs, &block)
236
+ def send_config_command(method, *args, **kwargs, &block)
237
+ command = method == :blocking_call && args.size > 1 ? args[1..] : args
238
+
236
239
  case command[1].to_s.downcase
237
240
  when 'resetstat', 'rewrite', 'set'
238
- @node.call_all(method, *command, **kwargs, &block).first
239
- else assign_node(*command).send(method, *command, **kwargs, &block)
241
+ @node.call_all(method, *args, **kwargs, &block).first
242
+ else assign_node(*command).send(method, *args, **kwargs, &block)
240
243
  end
241
244
  end
242
245
 
243
- def send_memory_command(method, *command, **kwargs, &block)
246
+ def send_memory_command(method, *args, **kwargs, &block)
247
+ command = method == :blocking_call && args.size > 1 ? args[1..] : args
248
+
244
249
  case command[1].to_s.downcase
245
- when 'stats' then @node.call_all(method, *command, **kwargs, &block)
246
- when 'purge' then @node.call_all(method, *command, **kwargs, &block).first
247
- else assign_node(*command).send(method, *command, **kwargs, &block)
250
+ when 'stats' then @node.call_all(method, *args, **kwargs, &block)
251
+ when 'purge' then @node.call_all(method, *args, **kwargs, &block).first
252
+ else assign_node(*command).send(method, *args, **kwargs, &block)
248
253
  end
249
254
  end
250
255
 
251
- def send_client_command(method, *command, **kwargs, &block)
256
+ def send_client_command(method, *args, **kwargs, &block)
257
+ command = method == :blocking_call && args.size > 1 ? args[1..] : args
258
+
252
259
  case command[1].to_s.downcase
253
- when 'list' then @node.call_all(method, *command, **kwargs, &block).flatten
260
+ when 'list' then @node.call_all(method, *args, **kwargs, &block).flatten
254
261
  when 'pause', 'reply', 'setname'
255
- @node.call_all(method, *command, **kwargs, &block).first
256
- else assign_node(*command).send(method, *command, **kwargs, &block)
262
+ @node.call_all(method, *args, **kwargs, &block).first
263
+ else assign_node(*command).send(method, *args, **kwargs, &block)
257
264
  end
258
265
  end
259
266
 
260
- def send_cluster_command(method, *command, **kwargs, &block) # rubocop:disable Metrics/MethodLength
267
+ def send_cluster_command(method, *args, **kwargs, &block) # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
268
+ command = method == :blocking_call && args.size > 1 ? args[1..] : args
261
269
  subcommand = command[1].to_s.downcase
270
+
262
271
  case subcommand
263
272
  when 'addslots', 'delslots', 'failover', 'forget', 'meet', 'replicate',
264
273
  'reset', 'set-config-epoch', 'setslot'
265
274
  raise ::RedisClient::Cluster::OrchestrationCommandNotSupported, ['cluster', subcommand]
266
- when 'saveconfig' then @node.call_all(method, *command, **kwargs, &block).first
275
+ when 'saveconfig' then @node.call_all(method, *args, **kwargs, &block).first
267
276
  when 'getkeysinslot'
268
277
  raise ArgumentError, command.join(' ') if command.size != 4
269
278
 
270
- find_node(@node.find_node_key_of_replica(command[2])).send(method, *command, **kwargs, &block)
271
- else assign_node(*command).send(method, *command, **kwargs, &block)
279
+ find_node(@node.find_node_key_of_replica(command[2])).send(method, *args, **kwargs, &block)
280
+ else assign_node(*command).send(method, *args, **kwargs, &block)
272
281
  end
273
282
  end
274
283
 
275
- def send_script_command(method, *command, **kwargs, &block)
284
+ def send_script_command(method, *args, **kwargs, &block)
285
+ command = method == :blocking_call && args.size > 1 ? args[1..] : args
286
+
276
287
  case command[1].to_s.downcase
277
288
  when 'debug', 'kill'
278
- @node.call_all(method, *command, **kwargs, &block).first
289
+ @node.call_all(method, *args, **kwargs, &block).first
279
290
  when 'flush', 'load'
280
- @node.call_primaries(method, *command, **kwargs, &block).first
281
- else assign_node(*command).send(method, *command, **kwargs, &block)
291
+ @node.call_primaries(method, *args, **kwargs, &block).first
292
+ else assign_node(*command).send(method, *args, **kwargs, &block)
282
293
  end
283
294
  end
284
295
 
285
- def send_pubsub_command(method, *command, **kwargs, &block) # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity
296
+ def send_pubsub_command(method, *args, **kwargs, &block) # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
297
+ command = method == :blocking_call && args.size > 1 ? args[1..] : args
298
+
286
299
  case command[1].to_s.downcase
287
- when 'channels' then @node.call_all(method, *command, **kwargs, &block).flatten.uniq.sort
300
+ when 'channels' then @node.call_all(method, *args, **kwargs, &block).flatten.uniq.sort
288
301
  when 'numsub'
289
- @node.call_all(method, *command, **kwargs, &block).reject(&:empty?).map { |e| Hash[*e] }
302
+ @node.call_all(method, *args, **kwargs, &block).reject(&:empty?).map { |e| Hash[*e] }
290
303
  .reduce({}) { |a, e| a.merge(e) { |_, v1, v2| v1 + v2 } }
291
- when 'numpat' then @node.call_all(method, *command, **kwargs, &block).sum
292
- else assign_node(*command).send(method, *command, **kwargs, &block)
304
+ when 'numpat' then @node.call_all(method, *args, **kwargs, &block).sum
305
+ else assign_node(*command).send(method, *args, **kwargs, &block)
293
306
  end
294
307
  end
295
308
 
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.8
4
+ version: 0.0.9
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-21 00:00:00.000000000 Z
11
+ date: 2022-06-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: redis-client