routemaster-drain 3.6.4 → 3.6.8
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 +4 -4
- data/.circleci/config.yml +11 -342
- data/.circleci/config.yml.erb +2 -5
- data/CHANGELOG.md +22 -0
- data/README.md +7 -0
- data/lib/routemaster/api_client.rb +6 -3
- data/lib/routemaster/api_client_circuit.rb +2 -1
- data/lib/routemaster/drain.rb +1 -1
- data/lib/routemaster/errors.rb +6 -0
- data/lib/routemaster/middleware/error_handling.rb +1 -0
- data/routemaster-drain.gemspec +1 -0
- data/spec/routemaster/api_client_spec.rb +1 -1
- data/spec/routemaster/integration/api_client_spec.rb +5 -1
- metadata +16 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 431caa4e0158fa1ac795d6feeaa81b96c8e2fe4e
|
|
4
|
+
data.tar.gz: cceb454d55e593655e39131e7f127a7592101368
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f6b4be9f06e085159e29bf2b53bbf171acb04fece4f740482cb28915545788ef77bd94290d85e024fac0b96d1183c5e54e95a0a27ba6496725ea06e119d6c127
|
|
7
|
+
data.tar.gz: 677d45ad6541d7301132e90f2e9516131d2c0559ddda86c61b9c2c4270a405202974f26096030fe082019331e3ce786767d64aa6f7d13d5a34b9a30745e8c2dd
|
data/.circleci/config.yml
CHANGED
|
@@ -4,340 +4,24 @@
|
|
|
4
4
|
version: 2
|
|
5
5
|
jobs:
|
|
6
6
|
|
|
7
|
-
build_2.
|
|
7
|
+
build_2.5_rails_5:
|
|
8
8
|
docker:
|
|
9
|
-
- image:
|
|
9
|
+
- image: circleci/ruby:2.4.1
|
|
10
10
|
- image: redis:3-alpine
|
|
11
11
|
steps:
|
|
12
12
|
- checkout
|
|
13
13
|
|
|
14
14
|
- run:
|
|
15
|
-
name:
|
|
15
|
+
name: Install bundler
|
|
16
16
|
command: |
|
|
17
|
-
|
|
18
|
-
gem install bundler ;
|
|
19
|
-
bundle config --local gemfile $PWD/gemfiles/rails_3.gemfile
|
|
20
|
-
|
|
21
|
-
- restore_cache:
|
|
22
|
-
keys:
|
|
23
|
-
- v2-bundle-2.2.7-rails_3-{{ .Branch }}
|
|
24
|
-
- v2-bundle-2.2.7-rails_3
|
|
25
|
-
- v2-bundle-2.2.7
|
|
26
|
-
|
|
27
|
-
- run:
|
|
28
|
-
name: Install dependencies
|
|
29
|
-
command: |
|
|
30
|
-
bundle install --jobs=3 --retry=3 --path=$PWD/vendor/bundle
|
|
31
|
-
|
|
32
|
-
- run:
|
|
33
|
-
name: Run test suite
|
|
34
|
-
command: |
|
|
35
|
-
unset RACK_ENV &&
|
|
36
|
-
unset RAILS_ENV &&
|
|
37
|
-
bundle exec rspec
|
|
38
|
-
|
|
39
|
-
- save_cache:
|
|
40
|
-
key: v2-bundle-2.2.7-rails_3-{{ .Branch }}
|
|
41
|
-
paths:
|
|
42
|
-
- ~/project/vendor/bundle
|
|
43
|
-
- save_cache:
|
|
44
|
-
key: v2-bundle-2.2.7-rails_3
|
|
45
|
-
paths:
|
|
46
|
-
- ~/project/vendor/bundle
|
|
47
|
-
- save_cache:
|
|
48
|
-
key: v2-bundle-2.2.7
|
|
49
|
-
paths:
|
|
50
|
-
- ~/project/vendor/bundle
|
|
51
|
-
|
|
52
|
-
build_2.3.4_rails_3:
|
|
53
|
-
docker:
|
|
54
|
-
- image: deliveroo/multiruby
|
|
55
|
-
- image: redis:3-alpine
|
|
56
|
-
steps:
|
|
57
|
-
- checkout
|
|
58
|
-
|
|
59
|
-
- run:
|
|
60
|
-
name: Select build variant (Ruby 2.3.4, rails_3)
|
|
61
|
-
command: |
|
|
62
|
-
rbenv local 2.3.4 ;
|
|
63
|
-
gem install bundler ;
|
|
64
|
-
bundle config --local gemfile $PWD/gemfiles/rails_3.gemfile
|
|
65
|
-
|
|
66
|
-
- restore_cache:
|
|
67
|
-
keys:
|
|
68
|
-
- v2-bundle-2.3.4-rails_3-{{ .Branch }}
|
|
69
|
-
- v2-bundle-2.3.4-rails_3
|
|
70
|
-
- v2-bundle-2.3.4
|
|
71
|
-
|
|
72
|
-
- run:
|
|
73
|
-
name: Install dependencies
|
|
74
|
-
command: |
|
|
75
|
-
bundle install --jobs=3 --retry=3 --path=$PWD/vendor/bundle
|
|
76
|
-
|
|
77
|
-
- run:
|
|
78
|
-
name: Run test suite
|
|
79
|
-
command: |
|
|
80
|
-
unset RACK_ENV &&
|
|
81
|
-
unset RAILS_ENV &&
|
|
82
|
-
bundle exec rspec
|
|
83
|
-
|
|
84
|
-
- save_cache:
|
|
85
|
-
key: v2-bundle-2.3.4-rails_3-{{ .Branch }}
|
|
86
|
-
paths:
|
|
87
|
-
- ~/project/vendor/bundle
|
|
88
|
-
- save_cache:
|
|
89
|
-
key: v2-bundle-2.3.4-rails_3
|
|
90
|
-
paths:
|
|
91
|
-
- ~/project/vendor/bundle
|
|
92
|
-
- save_cache:
|
|
93
|
-
key: v2-bundle-2.3.4
|
|
94
|
-
paths:
|
|
95
|
-
- ~/project/vendor/bundle
|
|
96
|
-
|
|
97
|
-
build_2.2.7_rails_4:
|
|
98
|
-
docker:
|
|
99
|
-
- image: deliveroo/multiruby
|
|
100
|
-
- image: redis:3-alpine
|
|
101
|
-
steps:
|
|
102
|
-
- checkout
|
|
103
|
-
|
|
104
|
-
- run:
|
|
105
|
-
name: Select build variant (Ruby 2.2.7, rails_4)
|
|
106
|
-
command: |
|
|
107
|
-
rbenv local 2.2.7 ;
|
|
108
|
-
gem install bundler ;
|
|
109
|
-
bundle config --local gemfile $PWD/gemfiles/rails_4.gemfile
|
|
110
|
-
|
|
111
|
-
- restore_cache:
|
|
112
|
-
keys:
|
|
113
|
-
- v2-bundle-2.2.7-rails_4-{{ .Branch }}
|
|
114
|
-
- v2-bundle-2.2.7-rails_4
|
|
115
|
-
- v2-bundle-2.2.7
|
|
116
|
-
|
|
117
|
-
- run:
|
|
118
|
-
name: Install dependencies
|
|
119
|
-
command: |
|
|
120
|
-
bundle install --jobs=3 --retry=3 --path=$PWD/vendor/bundle
|
|
121
|
-
|
|
122
|
-
- run:
|
|
123
|
-
name: Run test suite
|
|
124
|
-
command: |
|
|
125
|
-
unset RACK_ENV &&
|
|
126
|
-
unset RAILS_ENV &&
|
|
127
|
-
bundle exec rspec
|
|
128
|
-
|
|
129
|
-
- save_cache:
|
|
130
|
-
key: v2-bundle-2.2.7-rails_4-{{ .Branch }}
|
|
131
|
-
paths:
|
|
132
|
-
- ~/project/vendor/bundle
|
|
133
|
-
- save_cache:
|
|
134
|
-
key: v2-bundle-2.2.7-rails_4
|
|
135
|
-
paths:
|
|
136
|
-
- ~/project/vendor/bundle
|
|
137
|
-
- save_cache:
|
|
138
|
-
key: v2-bundle-2.2.7
|
|
139
|
-
paths:
|
|
140
|
-
- ~/project/vendor/bundle
|
|
141
|
-
|
|
142
|
-
build_2.3.4_rails_4:
|
|
143
|
-
docker:
|
|
144
|
-
- image: deliveroo/multiruby
|
|
145
|
-
- image: redis:3-alpine
|
|
146
|
-
steps:
|
|
147
|
-
- checkout
|
|
148
|
-
|
|
149
|
-
- run:
|
|
150
|
-
name: Select build variant (Ruby 2.3.4, rails_4)
|
|
151
|
-
command: |
|
|
152
|
-
rbenv local 2.3.4 ;
|
|
153
|
-
gem install bundler ;
|
|
154
|
-
bundle config --local gemfile $PWD/gemfiles/rails_4.gemfile
|
|
155
|
-
|
|
156
|
-
- restore_cache:
|
|
157
|
-
keys:
|
|
158
|
-
- v2-bundle-2.3.4-rails_4-{{ .Branch }}
|
|
159
|
-
- v2-bundle-2.3.4-rails_4
|
|
160
|
-
- v2-bundle-2.3.4
|
|
161
|
-
|
|
162
|
-
- run:
|
|
163
|
-
name: Install dependencies
|
|
164
|
-
command: |
|
|
165
|
-
bundle install --jobs=3 --retry=3 --path=$PWD/vendor/bundle
|
|
166
|
-
|
|
167
|
-
- run:
|
|
168
|
-
name: Run test suite
|
|
169
|
-
command: |
|
|
170
|
-
unset RACK_ENV &&
|
|
171
|
-
unset RAILS_ENV &&
|
|
172
|
-
bundle exec rspec
|
|
173
|
-
|
|
174
|
-
- save_cache:
|
|
175
|
-
key: v2-bundle-2.3.4-rails_4-{{ .Branch }}
|
|
176
|
-
paths:
|
|
177
|
-
- ~/project/vendor/bundle
|
|
178
|
-
- save_cache:
|
|
179
|
-
key: v2-bundle-2.3.4-rails_4
|
|
180
|
-
paths:
|
|
181
|
-
- ~/project/vendor/bundle
|
|
182
|
-
- save_cache:
|
|
183
|
-
key: v2-bundle-2.3.4
|
|
184
|
-
paths:
|
|
185
|
-
- ~/project/vendor/bundle
|
|
186
|
-
|
|
187
|
-
build_2.4.1_rails_4:
|
|
188
|
-
docker:
|
|
189
|
-
- image: deliveroo/multiruby
|
|
190
|
-
- image: redis:3-alpine
|
|
191
|
-
steps:
|
|
192
|
-
- checkout
|
|
193
|
-
|
|
194
|
-
- run:
|
|
195
|
-
name: Select build variant (Ruby 2.4.1, rails_4)
|
|
196
|
-
command: |
|
|
197
|
-
rbenv local 2.4.1 ;
|
|
198
|
-
gem install bundler ;
|
|
199
|
-
bundle config --local gemfile $PWD/gemfiles/rails_4.gemfile
|
|
200
|
-
|
|
201
|
-
- restore_cache:
|
|
202
|
-
keys:
|
|
203
|
-
- v2-bundle-2.4.1-rails_4-{{ .Branch }}
|
|
204
|
-
- v2-bundle-2.4.1-rails_4
|
|
205
|
-
- v2-bundle-2.4.1
|
|
206
|
-
|
|
207
|
-
- run:
|
|
208
|
-
name: Install dependencies
|
|
209
|
-
command: |
|
|
210
|
-
bundle install --jobs=3 --retry=3 --path=$PWD/vendor/bundle
|
|
211
|
-
|
|
212
|
-
- run:
|
|
213
|
-
name: Run test suite
|
|
214
|
-
command: |
|
|
215
|
-
unset RACK_ENV &&
|
|
216
|
-
unset RAILS_ENV &&
|
|
217
|
-
bundle exec rspec
|
|
218
|
-
|
|
219
|
-
- save_cache:
|
|
220
|
-
key: v2-bundle-2.4.1-rails_4-{{ .Branch }}
|
|
221
|
-
paths:
|
|
222
|
-
- ~/project/vendor/bundle
|
|
223
|
-
- save_cache:
|
|
224
|
-
key: v2-bundle-2.4.1-rails_4
|
|
225
|
-
paths:
|
|
226
|
-
- ~/project/vendor/bundle
|
|
227
|
-
- save_cache:
|
|
228
|
-
key: v2-bundle-2.4.1
|
|
229
|
-
paths:
|
|
230
|
-
- ~/project/vendor/bundle
|
|
231
|
-
|
|
232
|
-
build_2.2.7_rails_5:
|
|
233
|
-
docker:
|
|
234
|
-
- image: deliveroo/multiruby
|
|
235
|
-
- image: redis:3-alpine
|
|
236
|
-
steps:
|
|
237
|
-
- checkout
|
|
238
|
-
|
|
239
|
-
- run:
|
|
240
|
-
name: Select build variant (Ruby 2.2.7, rails_5)
|
|
241
|
-
command: |
|
|
242
|
-
rbenv local 2.2.7 ;
|
|
243
|
-
gem install bundler ;
|
|
244
|
-
bundle config --local gemfile $PWD/gemfiles/rails_5.gemfile
|
|
245
|
-
|
|
246
|
-
- restore_cache:
|
|
247
|
-
keys:
|
|
248
|
-
- v2-bundle-2.2.7-rails_5-{{ .Branch }}
|
|
249
|
-
- v2-bundle-2.2.7-rails_5
|
|
250
|
-
- v2-bundle-2.2.7
|
|
251
|
-
|
|
252
|
-
- run:
|
|
253
|
-
name: Install dependencies
|
|
254
|
-
command: |
|
|
255
|
-
bundle install --jobs=3 --retry=3 --path=$PWD/vendor/bundle
|
|
256
|
-
|
|
257
|
-
- run:
|
|
258
|
-
name: Run test suite
|
|
259
|
-
command: |
|
|
260
|
-
unset RACK_ENV &&
|
|
261
|
-
unset RAILS_ENV &&
|
|
262
|
-
bundle exec rspec
|
|
263
|
-
|
|
264
|
-
- save_cache:
|
|
265
|
-
key: v2-bundle-2.2.7-rails_5-{{ .Branch }}
|
|
266
|
-
paths:
|
|
267
|
-
- ~/project/vendor/bundle
|
|
268
|
-
- save_cache:
|
|
269
|
-
key: v2-bundle-2.2.7-rails_5
|
|
270
|
-
paths:
|
|
271
|
-
- ~/project/vendor/bundle
|
|
272
|
-
- save_cache:
|
|
273
|
-
key: v2-bundle-2.2.7
|
|
274
|
-
paths:
|
|
275
|
-
- ~/project/vendor/bundle
|
|
276
|
-
|
|
277
|
-
build_2.3.4_rails_5:
|
|
278
|
-
docker:
|
|
279
|
-
- image: deliveroo/multiruby
|
|
280
|
-
- image: redis:3-alpine
|
|
281
|
-
steps:
|
|
282
|
-
- checkout
|
|
283
|
-
|
|
284
|
-
- run:
|
|
285
|
-
name: Select build variant (Ruby 2.3.4, rails_5)
|
|
286
|
-
command: |
|
|
287
|
-
rbenv local 2.3.4 ;
|
|
288
|
-
gem install bundler ;
|
|
289
|
-
bundle config --local gemfile $PWD/gemfiles/rails_5.gemfile
|
|
290
|
-
|
|
291
|
-
- restore_cache:
|
|
292
|
-
keys:
|
|
293
|
-
- v2-bundle-2.3.4-rails_5-{{ .Branch }}
|
|
294
|
-
- v2-bundle-2.3.4-rails_5
|
|
295
|
-
- v2-bundle-2.3.4
|
|
296
|
-
|
|
297
|
-
- run:
|
|
298
|
-
name: Install dependencies
|
|
299
|
-
command: |
|
|
300
|
-
bundle install --jobs=3 --retry=3 --path=$PWD/vendor/bundle
|
|
301
|
-
|
|
302
|
-
- run:
|
|
303
|
-
name: Run test suite
|
|
304
|
-
command: |
|
|
305
|
-
unset RACK_ENV &&
|
|
306
|
-
unset RAILS_ENV &&
|
|
307
|
-
bundle exec rspec
|
|
308
|
-
|
|
309
|
-
- save_cache:
|
|
310
|
-
key: v2-bundle-2.3.4-rails_5-{{ .Branch }}
|
|
311
|
-
paths:
|
|
312
|
-
- ~/project/vendor/bundle
|
|
313
|
-
- save_cache:
|
|
314
|
-
key: v2-bundle-2.3.4-rails_5
|
|
315
|
-
paths:
|
|
316
|
-
- ~/project/vendor/bundle
|
|
317
|
-
- save_cache:
|
|
318
|
-
key: v2-bundle-2.3.4
|
|
319
|
-
paths:
|
|
320
|
-
- ~/project/vendor/bundle
|
|
321
|
-
|
|
322
|
-
build_2.4.1_rails_5:
|
|
323
|
-
docker:
|
|
324
|
-
- image: deliveroo/multiruby
|
|
325
|
-
- image: redis:3-alpine
|
|
326
|
-
steps:
|
|
327
|
-
- checkout
|
|
328
|
-
|
|
329
|
-
- run:
|
|
330
|
-
name: Select build variant (Ruby 2.4.1, rails_5)
|
|
331
|
-
command: |
|
|
332
|
-
rbenv local 2.4.1 ;
|
|
333
|
-
gem install bundler ;
|
|
17
|
+
gem install bundler -v '~> 1.17' ;
|
|
334
18
|
bundle config --local gemfile $PWD/gemfiles/rails_5.gemfile
|
|
335
19
|
|
|
336
20
|
- restore_cache:
|
|
337
21
|
keys:
|
|
338
|
-
- v2-bundle-2.
|
|
339
|
-
- v2-bundle-2.
|
|
340
|
-
- v2-bundle-2.
|
|
22
|
+
- v2-bundle-2.5.0-rails_5-{{ .Branch }}
|
|
23
|
+
- v2-bundle-2.5.0-rails_5
|
|
24
|
+
- v2-bundle-2.5.0
|
|
341
25
|
|
|
342
26
|
- run:
|
|
343
27
|
name: Install dependencies
|
|
@@ -352,15 +36,15 @@ jobs:
|
|
|
352
36
|
bundle exec rspec
|
|
353
37
|
|
|
354
38
|
- save_cache:
|
|
355
|
-
key: v2-bundle-2.
|
|
39
|
+
key: v2-bundle-2.5.0-rails_5-{{ .Branch }}
|
|
356
40
|
paths:
|
|
357
41
|
- ~/project/vendor/bundle
|
|
358
42
|
- save_cache:
|
|
359
|
-
key: v2-bundle-2.
|
|
43
|
+
key: v2-bundle-2.5.0-rails_5
|
|
360
44
|
paths:
|
|
361
45
|
- ~/project/vendor/bundle
|
|
362
46
|
- save_cache:
|
|
363
|
-
key: v2-bundle-2.
|
|
47
|
+
key: v2-bundle-2.5.0
|
|
364
48
|
paths:
|
|
365
49
|
- ~/project/vendor/bundle
|
|
366
50
|
|
|
@@ -369,20 +53,5 @@ workflows:
|
|
|
369
53
|
version: 2
|
|
370
54
|
test:
|
|
371
55
|
jobs:
|
|
372
|
-
|
|
373
|
-
- build_2.2.7_rails_3
|
|
374
|
-
|
|
375
|
-
- build_2.3.4_rails_3
|
|
376
|
-
|
|
377
|
-
- build_2.2.7_rails_4
|
|
378
|
-
|
|
379
|
-
- build_2.3.4_rails_4
|
|
380
|
-
|
|
381
|
-
- build_2.4.1_rails_4
|
|
382
|
-
|
|
383
|
-
- build_2.2.7_rails_5
|
|
384
|
-
|
|
385
|
-
- build_2.3.4_rails_5
|
|
386
|
-
|
|
387
|
-
- build_2.4.1_rails_5
|
|
56
|
+
- build_2.5_rails_5
|
|
388
57
|
|
data/.circleci/config.yml.erb
CHANGED
|
@@ -2,14 +2,11 @@
|
|
|
2
2
|
# erb .circleci/config.yml.erb > .circleci/config.yml
|
|
3
3
|
<%
|
|
4
4
|
builds = [
|
|
5
|
-
['2.2.7', 'rails_3'],
|
|
6
5
|
['2.3.4', 'rails_3'],
|
|
7
|
-
['2.2.7', 'rails_4'],
|
|
8
6
|
['2.3.4', 'rails_4'],
|
|
9
7
|
['2.4.1', 'rails_4'],
|
|
10
|
-
['2.2.7', 'rails_5'],
|
|
11
8
|
['2.3.4', 'rails_5'],
|
|
12
|
-
['2.4.1', 'rails_5']
|
|
9
|
+
['2.4.1', 'rails_5']
|
|
13
10
|
]
|
|
14
11
|
%>
|
|
15
12
|
version: 2
|
|
@@ -26,7 +23,7 @@ jobs:
|
|
|
26
23
|
name: Select build variant (Ruby <%= ruby %>, <%= variant %>)
|
|
27
24
|
command: |
|
|
28
25
|
rbenv local <%= ruby %> ;
|
|
29
|
-
gem install bundler ;
|
|
26
|
+
gem install bundler -v '~> 1.17' ;
|
|
30
27
|
bundle config --local gemfile $PWD/gemfiles/<%= variant %>.gemfile
|
|
31
28
|
|
|
32
29
|
- restore_cache:
|
data/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,28 @@
|
|
|
2
2
|
|
|
3
3
|
_A description of your awesome changes here!_
|
|
4
4
|
|
|
5
|
+
### 3.6.8
|
|
6
|
+
|
|
7
|
+
Features:
|
|
8
|
+
|
|
9
|
+
- Raises error on `502 Bad Gateway` [#94](https://github.com/deliveroo/routemaster-drain/pull/94)
|
|
10
|
+
|
|
11
|
+
### 3.6.7 (2021-02-11)
|
|
12
|
+
|
|
13
|
+
Features:
|
|
14
|
+
|
|
15
|
+
- APIClient accepts timeout and open_timeout options
|
|
16
|
+
|
|
17
|
+
### 3.6.5 (2019-02-08)
|
|
18
|
+
|
|
19
|
+
Bug fix:
|
|
20
|
+
|
|
21
|
+
- Make sure Faraday adapter is loaded after all middleware for ApiClient
|
|
22
|
+
|
|
23
|
+
Drop:
|
|
24
|
+
|
|
25
|
+
- Builds for Ruby 2.2
|
|
26
|
+
|
|
5
27
|
### 3.6.4 (2018-10-23)
|
|
6
28
|
|
|
7
29
|
Features:
|
data/README.md
CHANGED
|
@@ -139,6 +139,13 @@ map '/events' do
|
|
|
139
139
|
end
|
|
140
140
|
```
|
|
141
141
|
|
|
142
|
+
You can use the `.subscribe` method multiple times to have your event batches
|
|
143
|
+
go through multiple listeners. But bear in the mind any performance cost of
|
|
144
|
+
multiple places of processing the event batches. For example, instead of having
|
|
145
|
+
multiple listener classes that iterate over the events in a batch, you can have
|
|
146
|
+
a single listener class that iterates over the batch only once and reacts to the
|
|
147
|
+
batch's events accordingly.
|
|
148
|
+
|
|
142
149
|
This relies on the excellent event bus from the [wisper
|
|
143
150
|
gem](https://github.com/krisleech/wisper#wisper).
|
|
144
151
|
|
|
@@ -45,6 +45,8 @@ module Routemaster
|
|
|
45
45
|
@retry_attempts = options.fetch :retry_attempts, 2
|
|
46
46
|
@retry_methods = options.fetch :retry_methods, Faraday::Request::Retry::IDEMPOTENT_METHODS
|
|
47
47
|
@retry_exceptions = options.fetch :retry_exceptions, Faraday::Request::Retry::Options.new.exceptions
|
|
48
|
+
@timeout = options.fetch :timeout, nil
|
|
49
|
+
@open_timeout = options.fetch :open_timeout, nil
|
|
48
50
|
|
|
49
51
|
connection # warm up connection so Faraday does all it's magical file loading in the main thread
|
|
50
52
|
end
|
|
@@ -140,14 +142,15 @@ module Routemaster
|
|
|
140
142
|
f.use Routemaster::Middleware::ResponseCaching, listener: @listener
|
|
141
143
|
f.use Routemaster::Middleware::Metrics, client: @metrics_client, source_peer: @source_peer
|
|
142
144
|
f.use Routemaster::Middleware::ErrorHandling
|
|
143
|
-
f.adapter :typhoeus
|
|
144
145
|
|
|
145
146
|
@middlewares.each do |middleware|
|
|
146
147
|
f.use(*middleware)
|
|
147
148
|
end
|
|
148
149
|
|
|
149
|
-
f.
|
|
150
|
-
|
|
150
|
+
f.adapter :typhoeus
|
|
151
|
+
|
|
152
|
+
f.options.timeout = (@timeout || ENV.fetch('ROUTEMASTER_CACHE_TIMEOUT', 1)).to_f
|
|
153
|
+
f.options.open_timeout = (@open_timeout || ENV.fetch('ROUTEMASTER_CACHE_TIMEOUT', 1)).to_f
|
|
151
154
|
f.ssl.verify = ENV.fetch('ROUTEMASTER_CACHE_VERIFY_SSL', 'false') == 'true'
|
|
152
155
|
end
|
|
153
156
|
end
|
|
@@ -25,13 +25,14 @@ module Routemaster
|
|
|
25
25
|
ENV.fetch('ROUTEMASTER_ENABLE_API_CLIENT_CIRCUIT', 'NO') =~ /\A(YES|TRUE|ON|1)\Z/i
|
|
26
26
|
end
|
|
27
27
|
|
|
28
|
+
|
|
28
29
|
def circuit
|
|
29
30
|
Circuitbox.circuit(@circuit_name, {
|
|
30
31
|
sleep_window: configuration_setting(@circuit_name, 'ROUTEMASTER_CIRCUIT_BREAKER_SLEEP_WINDOW', 60).to_i,
|
|
31
32
|
time_window: configuration_setting(@circuit_name, 'ROUTEMASTER_CIRCUIT_BREAKER_TIME_WINDOW', 120).to_i,
|
|
32
33
|
volume_threshold: configuration_setting(@circuit_name, 'ROUTEMASTER_CIRCUIT_BREAKER_VOLUME_THRESHOLD', 50).to_i,
|
|
33
34
|
error_threshold: configuration_setting(@circuit_name, 'ROUTEMASTER_CIRCUIT_BREAKER_ERROR_THRESHOLD', 50).to_i,
|
|
34
|
-
cache: Moneta.new(
|
|
35
|
+
cache: Moneta::Adapters::Redis.new(backend: Config.cache_redis),
|
|
35
36
|
exceptions: [Routemaster::Errors::FatalResource, Faraday::TimeoutError]
|
|
36
37
|
})
|
|
37
38
|
end
|
data/lib/routemaster/drain.rb
CHANGED
data/lib/routemaster/errors.rb
CHANGED
data/routemaster-drain.gemspec
CHANGED
|
@@ -53,7 +53,7 @@ describe Routemaster::APIClient do
|
|
|
53
53
|
subject.status
|
|
54
54
|
assert_requested(:get, /example/) do |req|
|
|
55
55
|
expect(req.headers.keys).to include('X-Custom-Header')
|
|
56
|
-
expect(req.headers['User-Agent']).to eql "RoutemasterDrain - Faraday
|
|
56
|
+
expect(req.headers['User-Agent']).to eql "RoutemasterDrain - Faraday v#{Faraday::VERSION}"
|
|
57
57
|
end
|
|
58
58
|
end
|
|
59
59
|
|
|
@@ -21,7 +21,7 @@ describe Routemaster::APIClient do
|
|
|
21
21
|
let(:port) { 8080 }
|
|
22
22
|
let(:service) do
|
|
23
23
|
TestServer.new(port) do |server|
|
|
24
|
-
[400, 401, 403, 404, 405, 409, 412, 413, 429, 500, 503].each do |status_code|
|
|
24
|
+
[400, 401, 403, 404, 405, 409, 412, 413, 429, 500, 502, 503].each do |status_code|
|
|
25
25
|
server.mount_proc "/#{status_code}" do |req, res|
|
|
26
26
|
res.status = status_code
|
|
27
27
|
res.body = { field: 'test' }.to_json
|
|
@@ -163,6 +163,10 @@ describe Routemaster::APIClient do
|
|
|
163
163
|
expect { perform.(host + '/500') }.to raise_error(Routemaster::Errors::FatalResource)
|
|
164
164
|
end
|
|
165
165
|
|
|
166
|
+
it 'raises a BadGateway on 502' do
|
|
167
|
+
expect { perform.(host + '/502') }.to raise_error(Routemaster::Errors::BadGateway)
|
|
168
|
+
end
|
|
169
|
+
|
|
166
170
|
it 'raises a ServiceNotAvailable on 503' do
|
|
167
171
|
expect { perform.(host + '/503') }.to raise_error(Routemaster::Errors::ServiceNotAvailable)
|
|
168
172
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: routemaster-drain
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.6.
|
|
4
|
+
version: 3.6.8
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Julien Letessier
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2021-07-21 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: addressable
|
|
@@ -150,6 +150,20 @@ dependencies:
|
|
|
150
150
|
- - ">="
|
|
151
151
|
- !ruby/object:Gem::Version
|
|
152
152
|
version: '0'
|
|
153
|
+
- !ruby/object:Gem::Dependency
|
|
154
|
+
name: moneta
|
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
|
156
|
+
requirements:
|
|
157
|
+
- - '='
|
|
158
|
+
- !ruby/object:Gem::Version
|
|
159
|
+
version: 1.0.0
|
|
160
|
+
type: :runtime
|
|
161
|
+
prerelease: false
|
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
163
|
+
requirements:
|
|
164
|
+
- - '='
|
|
165
|
+
- !ruby/object:Gem::Version
|
|
166
|
+
version: 1.0.0
|
|
153
167
|
description:
|
|
154
168
|
email:
|
|
155
169
|
- julien.letessier@gmail.com
|