redis-cluster-client 0.4.11 → 0.4.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: c6055086f0723628b8c2d7158f2b49ecf6378095bcb4c7e4123461d2c14b5ff5
4
- data.tar.gz: db0b1fbd400b8eafed3c3f7a660824e77d3df456eb88f6cf99f4a89572989385
3
+ metadata.gz: d8eb62456ad98c03e10bf81773dfb27cfaf68b7ad8af608b13e2427e950e7379
4
+ data.tar.gz: 736117d62e45313ca6f96e97e0e3fc03093a9542315302233a55c3cde2731303
5
5
  SHA512:
6
- metadata.gz: 7d2a016a5e7f970ed6444721a51de7c8afa3412a27a7400ed75fa7ad9e43c9f4e308fe5992f25e7bfa863446b54ab8527d8bc425888d6c36bed7cddc702bb134
7
- data.tar.gz: 2b885ed32758f4deecbd6449a70f484ed340a0b123e0cc920756fe06df7898c1f77af3874f2da1d062d53d478aad6033628ecec8f0754e3ec977b1ffc56a5840
6
+ metadata.gz: 81079a5a9985bd4fbe2b20f3ffaa5e59db4c95f9f9f184209b50ca897ab3fa3cdee8687f9be90cf46b0a371c668dff171c1f3488b3e848885d738133f0bf6e2a
7
+ data.tar.gz: 0d1e9da7b0de3cec96cb88431d2cdd935c9764c268610e4146737ae6bd7d634869a82d9425243a3c2307d7277974b1df5f3ee8d9abd78bab6169453fc724e3d3
@@ -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,21 +56,21 @@ 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
@@ -80,26 +81,26 @@ class RedisClient
80
81
 
81
82
  def _call(command)
82
83
  node_key = @router.find_node_key(command)
83
- add_state(node_key)
84
84
  try_call(node_key, command)
85
85
  end
86
86
 
87
87
  def try_call(node_key, command, retry_count: 1)
88
- @states[node_key].call(command)
88
+ add_state(node_key).call(command)
89
89
  rescue ::RedisClient::CommandError => e
90
90
  raise if !e.message.start_with?('MOVED') || retry_count <= 0
91
91
 
92
92
  # for sharded pub/sub
93
93
  node_key = e.message.split[2]
94
- add_state(node_key)
95
94
  retry_count -= 1
96
95
  retry
97
96
  end
98
97
 
99
98
  def add_state(node_key)
100
- return @states[node_key] if @states.key?(node_key)
99
+ return @state_dict[node_key] if @state_dict.key?(node_key)
101
100
 
102
- @states[node_key] = State.new(@router.find_node(node_key).pubsub)
101
+ state = State.new(@router.find_node(node_key).pubsub)
102
+ @state_list << state
103
+ @state_dict[node_key] = state
103
104
  end
104
105
 
105
106
  def obtain_current_time
metadata CHANGED
@@ -1,7 +1,7 @@
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.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Taishi Kasuga