semian 0.7.8 → 0.7.9

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
  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