redis-cluster-client 0.4.11 → 0.4.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c6055086f0723628b8c2d7158f2b49ecf6378095bcb4c7e4123461d2c14b5ff5
4
- data.tar.gz: db0b1fbd400b8eafed3c3f7a660824e77d3df456eb88f6cf99f4a89572989385
3
+ metadata.gz: 840b8fc3ccf9f870d2a5911a6b529f4ddc021e2c9ebb41f88f54c0fb324c6b89
4
+ data.tar.gz: da935ffb827910097b824247c6f308afe6177ba701be3307494628100ae85d43
5
5
  SHA512:
6
- metadata.gz: 7d2a016a5e7f970ed6444721a51de7c8afa3412a27a7400ed75fa7ad9e43c9f4e308fe5992f25e7bfa863446b54ab8527d8bc425888d6c36bed7cddc702bb134
7
- data.tar.gz: 2b885ed32758f4deecbd6449a70f484ed340a0b123e0cc920756fe06df7898c1f77af3874f2da1d062d53d478aad6033628ecec8f0754e3ec977b1ffc56a5840
6
+ metadata.gz: 8973e3c8f747aad5e2e41649a7c3fb9787cdf8f794b7f9c9bb16225a0f15504746d9be65cc7eb0760bd6259d8e97f931ca578f3a71cc9a9c2094a8c00cf0e1f3
7
+ data.tar.gz: f13ce04e702ff896e7ab63c92f5cde997c878328bf87c539c7c764dd9c3e7b80efbf1af6edfc31946bed9d6fb69b549a60b4d7cab57d0acf4b721bf8859a9810
@@ -43,7 +43,8 @@ class RedisClient
43
43
  def initialize(router, command_builder)
44
44
  @router = router
45
45
  @command_builder = command_builder
46
- @states = {}
46
+ @state_list = []
47
+ @state_dict = {}
47
48
  end
48
49
 
49
50
  def call(*args, **kwargs)
@@ -55,24 +56,26 @@ class RedisClient
55
56
  end
56
57
 
57
58
  def close
58
- @states.each_value(&:close)
59
- @states.clear
59
+ @state_list.each(&:close)
60
+ @state_list.clear
61
+ @state_dict.clear
60
62
  end
61
63
 
62
64
  def next_event(timeout = nil)
63
- return if @states.empty?
65
+ return if @state_list.empty?
64
66
 
65
67
  max_duration = calc_max_duration(timeout)
66
68
  starting = obtain_current_time
67
- clients = @states.values
68
69
  loop do
69
70
  break if max_duration > 0 && obtain_current_time - starting > max_duration
70
71
 
71
- clients.shuffle!
72
- clients.each do |pubsub|
72
+ @state_list.shuffle!
73
+ @state_list.each do |pubsub|
73
74
  message = pubsub.take_message(timeout)
74
75
  return message if message
75
76
  end
77
+
78
+ sleep 0.001
76
79
  end
77
80
  end
78
81
 
@@ -80,26 +83,26 @@ class RedisClient
80
83
 
81
84
  def _call(command)
82
85
  node_key = @router.find_node_key(command)
83
- add_state(node_key)
84
86
  try_call(node_key, command)
85
87
  end
86
88
 
87
89
  def try_call(node_key, command, retry_count: 1)
88
- @states[node_key].call(command)
90
+ add_state(node_key).call(command)
89
91
  rescue ::RedisClient::CommandError => e
90
92
  raise if !e.message.start_with?('MOVED') || retry_count <= 0
91
93
 
92
94
  # for sharded pub/sub
93
95
  node_key = e.message.split[2]
94
- add_state(node_key)
95
96
  retry_count -= 1
96
97
  retry
97
98
  end
98
99
 
99
100
  def add_state(node_key)
100
- return @states[node_key] if @states.key?(node_key)
101
+ return @state_dict[node_key] if @state_dict.key?(node_key)
101
102
 
102
- @states[node_key] = State.new(@router.find_node(node_key).pubsub)
103
+ state = State.new(@router.find_node(node_key).pubsub)
104
+ @state_list << state
105
+ @state_dict[node_key] = state
103
106
  end
104
107
 
105
108
  def obtain_current_time
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.4.11
4
+ version: 0.4.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Taishi Kasuga
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-08-12 00:00:00.000000000 Z
11
+ date: 2023-08-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: redis-client