semian 0.11.9 → 0.13.1

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: a55808808dfd488dd16eaf8f20326f05c7abc82ea4ffe36b6f6f0e9f76075351
4
- data.tar.gz: 5650b7114198219130829324dee4ce139bc99eb886b1c0a54de3c5ee11a1a933
3
+ metadata.gz: 78f1c9a991cd16ae1da354babc364364cf1aac75f07b1fb3d694f75c94f33411
4
+ data.tar.gz: 51585c1ccf8aa6f02c45b1da9da58753e91ce45a92f99c3880c5fb46c6b82aa5
5
5
  SHA512:
6
- metadata.gz: 90c79812e0f790237543afb9ba080c7aed46dd2118df5d1610663e2d53908b6f5ef28aba6686cddddfdc0697a081712bc78c2b673ddc7c8e71f03ef9787908a0
7
- data.tar.gz: 5a29bdafa94979ce8ee2f292536ec4a31366af2e9194f02085746682d76f22762c30fad5113073b9a6b2c898649a6b00feb570641937d5361fd6b36b7fa28878
6
+ metadata.gz: 6b8f18a662e05dbedb5dec96ed1c740a40d1a644a098d01e0b82440aa6a877b9f3d67611cb38293699fb2a19bd4cf7aa9b0fa02c03babaa9063856d8cfabcd25
7
+ data.tar.gz: 32546169e572cacd1cb85b63dd8b01164ba4eb15858394c9163d9de3d2ffdb258418f2dac7ebcb51e7ad8bd6ff592973c81f7758e8085a855b31011ce13c47e2
data/CHANGELOG.md ADDED
@@ -0,0 +1,239 @@
1
+ # Unreleased
2
+
3
+ # v0.13.1
4
+
5
+ * Fix: Raise `Redis::OutOfMemoryError` for messages that match `OOM command not allowed when used memory > 'maxmemory'` rather than checking `start_with?("OOM ")`. (#367)
6
+
7
+ # v0.13.0
8
+
9
+ * Refactor: Replace Time.now with CLOCK_MONOTONIC in MockServer (#318)
10
+ * Fix: Circuit not open for GRPC::ActiveCall::Operation failures (#348)
11
+
12
+ # v0.12.0
13
+
14
+ * Feature: Add support for the `redis-client` gem (#314)
15
+
16
+ # v0.11.8
17
+
18
+ * Feature: Add error_threshold_timeout configuration parameter (#299)
19
+
20
+ # v0.11.7
21
+
22
+ * Fix: ECONNRESET won't trigger circuit open for redis (#306)
23
+
24
+ # v0.11.6
25
+
26
+ * Fix: pass disable flag by patching new singleton method (#303)
27
+
28
+ # v0.11.5
29
+
30
+ * Feature: Add disable flag to http adapter (#301)
31
+
32
+ # v0.11.4
33
+
34
+ * Fix: Add `extern` to global variable declarations for gcc 10 (#288)
35
+
36
+ # v0.11.3
37
+
38
+ * Feature: Log last error message on circuit breaker state transition (#285)
39
+ * Fix: Update README and docs to resolve common misconception about error_threshold (#283)
40
+
41
+ # v0.11.2
42
+
43
+ * Fix: Remove `MySQL client is not connected` error from mysql2 adapter
44
+
45
+ # v0.11.1
46
+
47
+ * Feature: Add `Semian.namespace` to globally prefix all the semaphore names. (#280)
48
+
49
+ # v0.11.0
50
+
51
+ * Feature: Add `Semian.default_permissions` to globally change the default semaphore permissions. (#279)
52
+
53
+ # v0.10.6
54
+
55
+ * Fix: Match whitelisted SQL queries when Marginalia is prepended (#276)
56
+
57
+ # v0.10.5
58
+
59
+ * Fix: Compatibility with GC.compact
60
+
61
+ # v0.10.4
62
+
63
+ * Fix: Revert the changes in v0.10.3. (#270)
64
+
65
+ # v0.10.3
66
+
67
+ * Fix: Positional/Keyword arguments deprecations warning for Ruby 2.7 in the grpc adapter. (#269)
68
+
69
+ # v0.10.2
70
+
71
+ * Fix: Positional/Keyword arguments deprecations warning for Ruby 2.7.
72
+
73
+ # v0.10.1
74
+
75
+ * Fix: thread safety bug on Ruby 2.7. (#263)
76
+
77
+ # v0.10.0
78
+
79
+ * Feature: Support half open resource timeout for redis.
80
+
81
+ # v0.9.1
82
+
83
+ * Fix: Compatibility with MRI 2.3
84
+
85
+ # v0.9.0
86
+
87
+ * Feature: Add a LRU to garbage collect old resources. (#193)
88
+
89
+ # v0.8.9
90
+ * Fix: Recursion issue in MySQL2 adapter causing circuits breakers to stay open much longer than they should. (#250)
91
+ * Fix: Better handle DNS resolutions exceptions in Redis adapter. (#230)
92
+
93
+ # v0.8.8
94
+ * Feature: Introduce the GRPC adapter (#200)
95
+
96
+ # v0.8.7
97
+ * Fix: Instrument success for `acquire_circuit_breaker` (#209)
98
+
99
+ # v0.8.6
100
+ * Feature: If an error instance responds to `#marks_semian_circuits?` don't mark the circuit if it returns false (#210)
101
+
102
+ # v0.8.5
103
+ * Fix: Redis adapter using hiredis is resilient to DNS resolution failures (#205)
104
+
105
+ # v0.8.4
106
+ * Feature: Introduce `half_open_resource_timeout` which changes the resource timeout when the circuit is in a half-open state for the Net::HTTP adapter. (#198)
107
+ * Feature: Add the cause of the last error when a circuit opens (#197)
108
+ * Fix: Reset successes when transitioning to the half open state (#192)
109
+
110
+ # v0.8.1
111
+
112
+ * Fix: Expose `half_open?` when the circuit state has not transitioned but will. This allows consumers further up the stack to know if the circuit
113
+ is half open.
114
+
115
+ # v0.8.0
116
+
117
+ * Feature: Introduce `half_open_resource_timeout` which changes the resource timeout when the circuit is in a half-open state (#188)
118
+
119
+ # v0.7.8
120
+
121
+ * Feature: More informative error messages when initializing Semian with missing
122
+ arguments (#182)
123
+ * Fix: Redis adapter is now resilient to DNS resolution failures (#184)
124
+
125
+ # v0.7.5
126
+
127
+ * Fix: Repaired compatibility with dependent Redis library
128
+
129
+ # v0.7.4
130
+
131
+ * Fix: Protect internal semaphore when adjusting resource count (#164)
132
+ * Feature: Use prepend when monkey-patching Net::HTTP. (#157)
133
+ * Feature: Include time spend waiting for bulkhead in notification (#154)
134
+
135
+ # v0.7.1
136
+
137
+ * Feature: Add the behaviour to enable open circuiting on 5xxs conditionally (#149)
138
+ * Refactor: Configurable hosts for Semian's development dependencies (#152)
139
+
140
+ # v0.7.0
141
+
142
+ This change introduced a series of changes to support a new "dynamic quota" ticket
143
+ allocation strategy. This code primarily affects bulkheads (protected resources).
144
+
145
+ Rather than statically setting a ticket count, workers (in their own process) now register
146
+ themselves. By specifying 'quota' instead of 'tickets', the bulkhead threshold will now be
147
+ computed dynamically as a ratio of the number of registered workers, eliminating the need to
148
+ continuously readjust ticket counts, and supporting environments with non-uniform worker
149
+ distribution between machines.
150
+
151
+ * Feature: Support quota based allocation strategy (#120)
152
+ * Feature: Add ability to manually unregister workers (#130)
153
+ * Feature: Add ability to clear resources from adapters and unregister all resources (#134)
154
+ * Feature: Allow sysV IPC key to be accessed in ruby (#136)
155
+ * Feature: Expose registered worker count to ruby (#137)
156
+ * Refactor: Allow registered worker count to be accessed through bulkhead (#138)
157
+ * Bug fix: Register all workers (#128)
158
+ * Bug fix: Lazy instantiate redis clien on first I/O (#132)
159
+ * Bug fix: New mysql error (#131)
160
+ * Bug fix: Prevent race conditions when unregistering (#141)
161
+ * Refactor/Feature: Break coupling between resource and circuit breaker (#123)
162
+ * Refactor: Use generic max_sem_val (#117)
163
+ * Refactor: Fix header syntax (#118)
164
+ * Refactor: Always acquire semaphore without_gvl (#121)
165
+ * Thread-safety for circuit breakers by default (#150)
166
+ * Fix bug where calling name on a protected resource without a semaphore would fail (#151)
167
+
168
+ # v0.6.2
169
+
170
+ * Refactor: Refactor semian ticket management into its own files (#116)
171
+ * Refactor: Create sem_meta_lock and sem_meta_unlock (#115)
172
+ * Refactor: Refactor semaphore operations (#114)
173
+
174
+ # v0.6.1
175
+
176
+ * Refactor: Generate a unique semaphore key by including size of semaphore set
177
+ * Refactor: Refactor semian\_resource related C functions
178
+ * Fix: Don't require sudo for travis (#110)
179
+ * Refactor: Refactor semian.c includes and types into header files
180
+ * Fix: Use glob instead of git for gemspec file list
181
+ * Fix: Fix travis CI for ruby 2.3.0 installing rainbows
182
+ * Refactor: Switch to enumerated type for tracking semaphore indices
183
+ * Docs: readme: explain co-operation between cbs and bulkheads
184
+ * Docs: readme: add section about server limits
185
+
186
+ # v0.6.0
187
+
188
+ * Feature: Load semian/rails automatically if necessary
189
+ * Feature: Implement AR::AbstractAdapter#semian\_resource
190
+
191
+ # v0.5.4
192
+
193
+ * Fix: Also let "Too many connections" be a first class conn error
194
+
195
+ # v0.5.3
196
+
197
+ * Fix: mysql: protect pings
198
+ * Fix: mysql: match more lost conn queries
199
+
200
+ # v0.5.2
201
+
202
+ * Fix: Make request\_allowed? thread safe
203
+ * Fix: Fix CI connect errors on HTTP requests by using 127.0.0.1 for host
204
+
205
+ # v0.5.1
206
+
207
+ * Fix: Assert Resource#initialize\_semaphore contract on Resource init
208
+ * Fix: Lock on older thin version for pre MRI 2.2 compatibility
209
+
210
+ # v0.5.0
211
+
212
+ * Fix: Only issue unsupported or disabled semaphores warnings when the first resource is instanciated
213
+ * Refactor: Cleanup requires
214
+ * Maintenance: Use published version of the toxiproxy gem
215
+ * Fix: Fix minitest deprecation warnings
216
+ * Maintenance: Update bundler on travis
217
+ * Maintenance: Update supported MRI versions on travis
218
+
219
+ # v0.4.3
220
+
221
+ * Fix: Fix lazy aliasing of Redis#semian\_resource
222
+ * Fix: Workaround rubocop parser limitations
223
+
224
+ # v0.4.2
225
+
226
+ * Fix: Fix for TimeoutError is deprecated in Ruby 2.3.0
227
+ * Feature: Include Ruby 2.3 in Travis builds
228
+
229
+ # v0.4.1
230
+ * Fix: resource: cast float ticket count to fixnum #75
231
+
232
+ # v0.4.0
233
+
234
+ * Feature: net/http: add adapter for net/http #58
235
+ * Refactor: circuit_breaker: split circuit breaker into three data structures to allow for
236
+ alternative implementations in the future #62
237
+ * Fix: mysql: don't prevent rollbacks on transactions #60
238
+ * Fix: core: fix initialization bug when the resource is accessed before the options
239
+ are set #65
data/LICENSE.md ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2014 Shopify
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.