redis-cluster 1.0.0.pre.rc.2 → 1.0.0.pre.rc.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/redis_cluster/client.rb +20 -0
- data/lib/redis_cluster/cluster.rb +2 -2
- data/lib/redis_cluster/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c4fb30f11cb1d74b3572c8e0c9ea64ff534da5c4
|
4
|
+
data.tar.gz: 08f644a16dc2155ea730e16170b40d72f2019511
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 105c1a258630a397d8f51a259a356751efcf6d67cb68484b73e4f0fa230d05d896c5970298840961bbe472232a2d2f986e71f28841d2fbaa21628ccdc07b9149
|
7
|
+
data.tar.gz: ae7fa4048759d265ba68c6c21ba18acba1918a407f4c7879a4b18494a0595293a64ea84967add9d19b7a1f57ad7d3999bd4b407ec33ae1b6a249d2d60289d70c
|
data/lib/redis_cluster/client.rb
CHANGED
@@ -16,6 +16,9 @@ class RedisCluster
|
|
16
16
|
@client = Redis::Client.new(opts)
|
17
17
|
@queue = []
|
18
18
|
@url = "#{client.host}:#{client.port}"
|
19
|
+
|
20
|
+
@loading = false
|
21
|
+
@ban_from = nil
|
19
22
|
end
|
20
23
|
|
21
24
|
def inspect
|
@@ -47,6 +50,18 @@ class RedisCluster
|
|
47
50
|
end
|
48
51
|
end
|
49
52
|
|
53
|
+
def healthy
|
54
|
+
return true unless @loading
|
55
|
+
|
56
|
+
# ban for 60 seconds for loading state
|
57
|
+
if Time.now - @ban_from > 60
|
58
|
+
@loading = false
|
59
|
+
@ban_from = nil
|
60
|
+
end
|
61
|
+
|
62
|
+
!@loading
|
63
|
+
end
|
64
|
+
|
50
65
|
private
|
51
66
|
|
52
67
|
def _commit
|
@@ -60,6 +75,11 @@ class RedisCluster
|
|
60
75
|
end
|
61
76
|
@queue = []
|
62
77
|
|
78
|
+
if result.last.is_a?(Redis::CommandError) && result.last.message['LOADING']
|
79
|
+
@loading = true
|
80
|
+
@ban_from = Time.now
|
81
|
+
end
|
82
|
+
|
63
83
|
result
|
64
84
|
end
|
65
85
|
end
|
@@ -41,9 +41,9 @@ class RedisCluster
|
|
41
41
|
when :master
|
42
42
|
slots[slot].first
|
43
43
|
when :slave
|
44
|
-
slots[slot][1..-1].sample || slots[slot].first
|
44
|
+
slots[slot][1..-1].select(&:healthy).sample || slots[slot].first
|
45
45
|
when :master_slave
|
46
|
-
slots[slot].sample
|
46
|
+
slots[slot].select(&:healthy).sample
|
47
47
|
end
|
48
48
|
end
|
49
49
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: redis-cluster
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.0.pre.rc.
|
4
|
+
version: 1.0.0.pre.rc.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bukalapak
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-07-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: redis
|