kennel 2.16.0 → 2.16.2

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: 3f5c11c126af9e586c2e7f48564760b8625248626204bdd76359001d78cd2038
4
- data.tar.gz: 7ec6271b5eb235c8ee4b0bbaf3b9d59dc3b3f8796c5cf8288f6d753094e99a3c
3
+ metadata.gz: a6fc48b5868a187ab21616c421e69bf02a041f1b9e05c3194f6026c7605b8154
4
+ data.tar.gz: ff105f1d6d1e25a201c5754a4c1e6810c93e8171b85f63e740f840afc2cd3f2a
5
5
  SHA512:
6
- metadata.gz: 6778c767c1b28ad451f42e0a7f86557382e93627bfee517d7fcd857f90a674bd63294d67253704975c5653d4de616f731524eaf37bd11ff41822635dfcf78c8a
7
- data.tar.gz: 626e57f6a9e8a8c8080defd2496d983fa93e0a9fcdf63e5ad87aad662c3f4aaca42ff7e5b0c6c9cb0d94fc66d43808fd10dee65add9d0ca3d1d60b76d2c801e9
6
+ metadata.gz: 194770cbdec93b0d59ace82976ca50b472f5daab2e9b511db6b433a2df567a9f841ad2c060323c8f0d6114248d98e3bc7c1aee5af332ef6856ef19f890b270ae
7
+ data.tar.gz: 759300d97ad5065d833e3d3e3589be9b50f68ce1e3500ab85deea132d099539e3b06fd90b78da2d37622509ecc3772cabbc537193a6028fbd662fc17fbf75491
data/lib/kennel/api.rb CHANGED
@@ -107,14 +107,12 @@ module Kennel
107
107
  cache.open(&block)
108
108
  end
109
109
 
110
- def request(method, path, body: nil, params: {}, ignore_404: false)
110
+ def request(method, path, body: nil, params: {}, ignore_404: false, tries: 5)
111
111
  path = "#{path}?#{Faraday::FlatParamsEncoder.encode(params)}" if params.any?
112
112
  cached = (ENV["FORCE_GET_CACHE"] && method == :get)
113
113
 
114
114
  with_cache cached, path do
115
115
  response = nil
116
- tries = 2
117
-
118
116
  tries.times do |i|
119
117
  response = Utils.retry Faraday::ConnectionFailed, Faraday::TimeoutError, times: 2 do
120
118
  @client.send(method, path) do |request|
@@ -133,6 +131,7 @@ module Kennel
133
131
  last_try = (i == tries - 1)
134
132
  break if last_try || ![:get, :put].include?(method) || response.status < 500
135
133
  Kennel.err.puts "Retrying on server error #{response.status} for #{path}"
134
+ sleep retry_backoff_time(i)
136
135
  end
137
136
 
138
137
  if !response.success? && (response.status != 404 || !ignore_404)
@@ -164,6 +163,12 @@ module Kennel
164
163
  sleep reset.to_f
165
164
  end
166
165
 
166
+ # 0:0.1s - 4:2s
167
+ def retry_backoff_time(attempt)
168
+ base = 2**attempt
169
+ 0.1 * base * (0.5 + (rand / 2.0))
170
+ end
171
+
167
172
  # allow caching all requests to speedup/benchmark logic that includes repeated requests
168
173
  def with_cache(enabled, key)
169
174
  return yield unless enabled
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module Kennel
3
- VERSION = "2.16.0"
3
+ VERSION = "2.16.2"
4
4
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kennel
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.16.0
4
+ version: 2.16.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Grosser