record_store 8.0.6 → 8.0.7

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
  SHA256:
3
- metadata.gz: 0ea2231f371be0d7bc9f308ccaec17a1b27c410cea7972a8e3e3f7a066ba9042
4
- data.tar.gz: dbd3fd8c7622660afd23443245c0a350a0bdec1ad2d26bd15951e8db182df751
3
+ metadata.gz: a6884d926bdd86badb5c898030ca919d28c61ff64fc7b023c5af227cc289a2be
4
+ data.tar.gz: 6189b564b512cb320b5a69a4027dc4642212ab9dc1aa054e66b899b70c58187b
5
5
  SHA512:
6
- metadata.gz: ca85b2b49dd23799a9ab95cc60e2e0575b55dc07defb9f6c0b039ff2ef02e5c55b20a7d092aebefedf727e33dd02ca3f2b34ffa5dd758e5d8050b902672caad9
7
- data.tar.gz: 7435df6101ac759bbf5b980aeb3eaf9b33c8fb4eaf02bccd087c60b74ebae600162fc53a9dc8ecb5eb812e9aa1f50aa37c1f2e91b7fbf3d2fdef9950de1270ce
6
+ metadata.gz: 59b22a7833c745d2416a6c3070f22115305e66a4b5553d3a9e20c7e703ab4c5125f24b5e9d278c81dd755337d015da422c9f32f6ebe7da031a850dce2dd2b7c3
7
+ data.tar.gz: 3f336051180e9e08ee46b11d4f516d8461f006ad882e28015dcaf4f481e5962c661cc7fea3a619090543987b39b80fcbbcbf182c29d38b60272cbc7177aedfe2
data/CHANGELOG.md CHANGED
@@ -1,5 +1,8 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## 8.0.7
4
+ - Add retry logic for server errors from providers
5
+
3
6
  ## 8.0.6
4
7
  - Fix quotes around Cloudflare TXT records
5
8
 
@@ -64,16 +64,13 @@ module Cloudflare
64
64
 
65
65
  begin
66
66
  response = conn.request(request)
67
- rescue StandardError => e
68
- raise "HTTP error: #{e.message}"
67
+ response.value
68
+ response
69
+ rescue Net::HTTPRetriableError, Net::HTTPFatalError => e
70
+ raise RecordStore::Provider::RetriableError, e.message
71
+ rescue Net::HTTPClientException, Net::HTTPError => e
72
+ raise RecordStore::Provider::Error, e.message
69
73
  end
70
-
71
- if response.code.to_i >= 300
72
- raise RecordStore::Provider::Error,
73
- "HTTP response code: #{response.code} - #{response.message}; #{response.body}"
74
- end
75
-
76
- response
77
74
  end
78
75
  end
79
76
 
@@ -6,6 +6,8 @@ module RecordStore
6
6
 
7
7
  class UnparseableBodyError < Error; end
8
8
 
9
+ class RetriableError < Error; end
10
+
9
11
  class << self
10
12
  def provider_for(object)
11
13
  lookup_error = false
@@ -145,6 +147,7 @@ module RecordStore
145
147
  max_timeouts: 5,
146
148
  max_conn_resets: 5,
147
149
  max_retries: 5,
150
+ max_server_errors: 3,
148
151
  delay: 1,
149
152
  backoff_multiplier: 2,
150
153
  max_backoff: 10
@@ -158,7 +161,7 @@ module RecordStore
158
161
 
159
162
  loop do
160
163
  return yield
161
- rescue UnparseableBodyError
164
+ rescue RecordStore::Provider::UnparseableBodyError
162
165
  raise if max_retries <= 0
163
166
 
164
167
  max_retries -= 1
@@ -176,6 +179,12 @@ module RecordStore
176
179
  max_conn_resets -= 1
177
180
 
178
181
  waiter.wait
182
+ rescue RecordStore::Provider::RetriableError
183
+ raise if max_server_errors <= 0
184
+
185
+ max_server_errors -= 1
186
+
187
+ waiter.wait(message: 'Waiting to retry after server error')
179
188
  end
180
189
  end
181
190
  end
@@ -1,3 +1,3 @@
1
1
  module RecordStore
2
- VERSION = '8.0.6'.freeze
2
+ VERSION = '8.0.7'.freeze
3
3
  end
data/record_store.gemspec CHANGED
@@ -46,7 +46,7 @@ Gem::Specification.new do |spec|
46
46
  spec.add_development_dependency 'mocha'
47
47
  spec.add_development_dependency 'pry'
48
48
  spec.add_development_dependency 'rake'
49
- spec.add_development_dependency 'rubocop', '~> 1.69.0'
49
+ spec.add_development_dependency 'rubocop', '~> 1.75.2'
50
50
  spec.add_development_dependency 'rubocop-shopify', '~> 2.15.1'
51
51
  spec.add_development_dependency 'vcr'
52
52
  spec.add_development_dependency 'webmock'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: record_store
3
3
  version: !ruby/object:Gem::Version
4
- version: 8.0.6
4
+ version: 8.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Willem van Bergen
8
8
  - Emil Stolarsky
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-02-27 00:00:00.000000000 Z
11
+ date: 1980-01-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel
@@ -304,14 +304,14 @@ dependencies:
304
304
  requirements:
305
305
  - - "~>"
306
306
  - !ruby/object:Gem::Version
307
- version: 1.69.0
307
+ version: 1.75.2
308
308
  type: :development
309
309
  prerelease: false
310
310
  version_requirements: !ruby/object:Gem::Requirement
311
311
  requirements:
312
312
  - - "~>"
313
313
  - !ruby/object:Gem::Version
314
- version: 1.69.0
314
+ version: 1.75.2
315
315
  - !ruby/object:Gem::Dependency
316
316
  name: rubocop-shopify
317
317
  requirement: !ruby/object:Gem::Requirement
@@ -453,7 +453,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
453
453
  - !ruby/object:Gem::Version
454
454
  version: '0'
455
455
  requirements: []
456
- rubygems_version: 3.6.3
456
+ rubygems_version: 3.6.8
457
457
  specification_version: 4
458
458
  summary: Manage DNS using git
459
459
  test_files: []