upperkut 0.8.0 → 0.8.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: 610726bb89a40550a7aebd91196d982e667a5dee5dd37679b3b120a8402d2874
4
- data.tar.gz: 707172c85bbf22f04a8c2bb5436e5dec749d42e5bc7893e33818f2e51139f78e
3
+ metadata.gz: b61a3728cde5e295de277abc22836653fc332640843bce69f3ca3832f830a1ec
4
+ data.tar.gz: f781b92bd8923e67e3f26a207904ee4b80bf54104bc98364559d4924a5b3c5e2
5
5
  SHA512:
6
- metadata.gz: f9e88a6c5382cfd1cd7aa250b3830ad2aec804d4d1715938f2dc38bb66cad313c4ce5c9de6b94d1ad311025597fe5401ad0175a0fef1e24f95da8936a006adba
7
- data.tar.gz: f33ffc495ec7653169ab8a3a1576cfa3fdafa60d751ff11815fe58c4a0a774703c0ed522f3713890ddb740a184c4ae187d641562fb49b650df8c651e774ca5ec
6
+ metadata.gz: 961de37230a1db0d1c8162b9a7e25f69715f647f154b3b36e66aef2568d0620235fbeaa5b92bcfefdb5189bcee0b1de98220e0db6811ee7dc3477114bdea3758
7
+ data.tar.gz: f509c2623813dd4132b1df11dc220de1082f441078a5ddc96b753fec9d47c87ea62851af45dd4257c60578e83b0647a36ef6a8f1a643a5748cbf58751206403d
@@ -1,8 +1,9 @@
1
1
  # Upperkut changes
2
2
  0.8.x
3
3
  --------
4
+ - Added exponential backoff when push_items #57
4
5
  - Introducing Item to avoid losing enqueued at and report wrong latency
5
- metrics, thanks to @jeangnc
6
+ metrics #56 thanks to @jeangnc
6
7
 
7
8
  0.7.x
8
9
  ---------
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- upperkut (0.8.0)
4
+ upperkut (0.8.1)
5
5
  connection_pool (~> 2.2, >= 2.2.2)
6
6
  redis (>= 4.1.0, < 5.0.0)
7
7
 
@@ -102,8 +102,10 @@ module Upperkut
102
102
  def redis
103
103
  raise ArgumentError, 'requires a block' unless block_given?
104
104
 
105
- redis_pool.with do |conn|
106
- yield conn
105
+ retry_block do
106
+ redis_pool.with do |conn|
107
+ yield conn
108
+ end
107
109
  end
108
110
  end
109
111
 
@@ -182,8 +182,10 @@ module Upperkut
182
182
  def redis
183
183
  raise ArgumentError, 'requires a block' unless block_given?
184
184
 
185
- redis_pool.with do |conn|
186
- yield conn
185
+ retry_block do
186
+ redis_pool.with do |conn|
187
+ yield conn
188
+ end
187
189
  end
188
190
  end
189
191
 
@@ -28,9 +28,13 @@ module Upperkut
28
28
 
29
29
  def initialize(worker, options = {})
30
30
  @options = options
31
- initialize_options
32
- @redis_pool = setup_redis_pool
31
+ @redis_options = @options.fetch(:redis, {})
33
32
  @worker = worker
33
+
34
+ @batch_size = @options.fetch(
35
+ :batch_size,
36
+ Integer(ENV['UPPERKUT_BATCH_SIZE'] || 1000)
37
+ )
34
38
  end
35
39
 
36
40
  def push_items(items = [])
@@ -82,13 +86,12 @@ module Upperkut
82
86
 
83
87
  private
84
88
 
85
- def initialize_options
86
- @redis_options = @options.fetch(:redis, {})
89
+ def key
90
+ "upperkut:queued:#{to_underscore(@worker.name)}"
91
+ end
87
92
 
88
- @batch_size = @options.fetch(
89
- :batch_size,
90
- Integer(ENV['UPPERKUT_BATCH_SIZE'] || 1000)
91
- )
93
+ def ensure_timestamp_attr(item)
94
+ item['timestamp'] = Time.now.utc.to_i unless item.key?('timestamp')
92
95
  end
93
96
 
94
97
  def pop_values(redis_client, args)
@@ -123,26 +126,24 @@ module Upperkut
123
126
  now_timestamp - job['timestamp'].to_f
124
127
  end
125
128
 
126
- def setup_redis_pool
127
- return @redis_options if @redis_options.is_a?(ConnectionPool)
128
-
129
- RedisPool.new(options.fetch(:redis, {})).create
130
- end
131
-
132
129
  def redis
133
130
  raise ArgumentError, 'requires a block' unless block_given?
134
131
 
135
- @redis_pool.with do |conn|
136
- yield conn
132
+ retry_block do
133
+ redis_pool.with do |conn|
134
+ yield conn
135
+ end
137
136
  end
138
137
  end
139
138
 
140
- def ensure_timestamp_attr(item)
141
- item['timestamp'] = Time.now.utc.to_i unless item.key?('timestamp')
142
- end
143
-
144
- def key
145
- "upperkut:queued:#{to_underscore(@worker.name)}"
139
+ def redis_pool
140
+ @redis_pool ||= begin
141
+ if @redis_options.is_a?(ConnectionPool)
142
+ @redis_options
143
+ else
144
+ RedisPool.new(@redis_options).create
145
+ end
146
+ end
146
147
  end
147
148
  end
148
149
  end
@@ -36,5 +36,22 @@ module Upperkut
36
36
  memo << Item.from_json(item) if item
37
37
  end
38
38
  end
39
+
40
+ def retry_block(retries_limit = 3, base_sleep = 2)
41
+ retries = 0
42
+
43
+ begin
44
+ yield
45
+ rescue StandardError => err
46
+ if retries < retries_limit
47
+ retries += 1
48
+ sleep_time = base_sleep**retries
49
+ Kernel.sleep(sleep_time)
50
+ retry
51
+ end
52
+
53
+ raise err
54
+ end
55
+ end
39
56
  end
40
57
  end
@@ -1,3 +1,3 @@
1
1
  module Upperkut
2
- VERSION = '0.8.0'.freeze
2
+ VERSION = '0.8.1'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: upperkut
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.8.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nando Sousa
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-03-25 00:00:00.000000000 Z
11
+ date: 2020-04-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: connection_pool