semian 0.7.8 → 0.7.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
  SHA1:
3
- metadata.gz: 4a3b9442939974d625257b6cfe0c0d450abe891b
4
- data.tar.gz: 4b15314ebcee0b7abc7eb840431c26d823d82735
3
+ metadata.gz: 84a146123d366cf81b13b36d9038f7338722647a
4
+ data.tar.gz: 05cf06fd875a0b989d348c17bae7206b06bf07a4
5
5
  SHA512:
6
- metadata.gz: 025d34c3dd67ee1822b2fdea88747779cc57bb08ad5f5a8ae00e0842025d863c6c0c48b51b108559b754ef9fb159f6b68ced52a3153905a3ed52f4c4e477cb1f
7
- data.tar.gz: 74d232c886d8dfca1e1023069d57a07340a58e0293ba3054bfc571e8b362b497b99ad57b0769c5fc5e650f854704d2a4f36e36318e3680e5163111ab3fd4b148
6
+ metadata.gz: 286c3a3a02aa7ecc68dc673baf15ece2c0693b186378f939d2ea5d77f30fbca6eb4f64a3019ea44cae6a35e21c02d56afec4340b1db41e6b3a9b39d638692204
7
+ data.tar.gz: d2e1d56be8743f82bca4da45c632f5f0bfa23b36d137c1d11497455f60cd4d8faefc90416ee6941a788dfef1a604fae22e4ccb19379a2658431b01f314983d47
@@ -12,6 +12,9 @@ class Redis
12
12
  end
13
13
  end
14
14
 
15
+ class OutOfMemoryError < Redis::CommandError
16
+ end
17
+
15
18
  ResourceBusyError = Class.new(SemianError)
16
19
  CircuitOpenError = Class.new(SemianError)
17
20
  ResolveError = Class.new(SemianError)
@@ -69,7 +72,11 @@ module Semian
69
72
  end
70
73
 
71
74
  def io(&block)
72
- acquire_semian_resource(adapter: :redis, scope: :query) { raw_io(&block) }
75
+ acquire_semian_resource(adapter: :redis, scope: :query) do
76
+ reply = raw_io(&block)
77
+ raise_if_out_of_memory(reply)
78
+ reply
79
+ end
73
80
  end
74
81
 
75
82
  def connect
@@ -89,6 +96,7 @@ module Semian
89
96
  [
90
97
  ::Redis::BaseConnectionError,
91
98
  ::Errno::EINVAL, # Hiredis bug: https://github.com/redis/hiredis-rb/issues/21
99
+ ::Redis::OutOfMemoryError,
92
100
  ]
93
101
  end
94
102
 
@@ -96,6 +104,12 @@ module Semian
96
104
  return options[:semian] if options.key?(:semian)
97
105
  return options['semian'.freeze] if options.key?('semian'.freeze)
98
106
  end
107
+
108
+ def raise_if_out_of_memory(reply)
109
+ return unless reply.is_a?(::Redis::CommandError)
110
+ return unless reply.message == "OOM command not allowed when used memory > 'maxmemory'."
111
+ raise ::Redis::OutOfMemoryError.new(reply.message)
112
+ end
99
113
  end
100
114
  end
101
115
 
@@ -1,3 +1,3 @@
1
1
  module Semian
2
- VERSION = '0.7.8'
2
+ VERSION = '0.7.9'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: semian
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.8
4
+ version: 0.7.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Scott Francis
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2018-04-05 00:00:00.000000000 Z
13
+ date: 2018-04-09 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rake-compiler