timberline 0.8.5 → 0.8.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +2 -3
- data/CHANGELOG +3 -0
- data/lib/timberline.rb +7 -0
- data/lib/timberline/config.rb +17 -2
- data/lib/timberline/queue.rb +4 -3
- data/lib/timberline/version.rb +1 -1
- data/spec/lib/timberline/queue_spec.rb +71 -2
- data/timberline.gemspec +1 -1
- metadata +5 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e1b6a21eb5632e2c1c6aa2bf9a5b10b959845257
|
4
|
+
data.tar.gz: ef713d037a79f52d7ab59bd00c883ba5ffeb1566
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 67996b724ec828c41b5a44c179b55899bf646c8d0ef5f6f3928514e4968c0fed7eb0282016acc4c7ab0340381f0a731f74fcb007581a99c3d1d6e62d08dacd8c
|
7
|
+
data.tar.gz: e56e9d483a53122a8cfb572bd0d6b8d07c1262d167d68de37d9061f9d2ef137af66344ce97391b22aff0d3b1cbc1fcd63dfb3d01bc3b94f28a888a82937c8703
|
data/.travis.yml
CHANGED
data/CHANGELOG
CHANGED
data/lib/timberline.rb
CHANGED
@@ -141,6 +141,13 @@ class Timberline
|
|
141
141
|
@config.stat_timeout * 60
|
142
142
|
end
|
143
143
|
|
144
|
+
# Lazy-loads the Timberline configuration.
|
145
|
+
# @return [Boolean] whether we want to record result stats for each job in a redis queue
|
146
|
+
def self.log_job_results?
|
147
|
+
initialize_if_necessary
|
148
|
+
@config.log_job_result_stats
|
149
|
+
end
|
150
|
+
|
144
151
|
# Create and start a new AnonymousWorker with the given
|
145
152
|
# queue_name and block. Convenience method.
|
146
153
|
#
|
data/lib/timberline/config.rb
CHANGED
@@ -27,7 +27,7 @@ class Timberline
|
|
27
27
|
# for failover protection.
|
28
28
|
#
|
29
29
|
class Config
|
30
|
-
attr_accessor :database, :host, :port, :timeout, :password,
|
30
|
+
attr_accessor :database, :host, :port, :timeout, :password, :log_job_result_stats,
|
31
31
|
:logger, :namespace, :max_retries, :stat_timeout, :sentinels
|
32
32
|
|
33
33
|
# Attemps to load configuration from TIMBERLINE_YAML, if it exists.
|
@@ -52,6 +52,12 @@ class Timberline
|
|
52
52
|
@stat_timeout ||= 60
|
53
53
|
end
|
54
54
|
|
55
|
+
# @return [Boolean] configuration setting for logging each job success or error in redis
|
56
|
+
# created in response to max memory limit on redis queues in aws
|
57
|
+
def log_job_result_stats
|
58
|
+
@log_job_result_stats ||= false
|
59
|
+
end
|
60
|
+
|
55
61
|
# @return [{host: "x", port: 1}] list of sentinel server
|
56
62
|
def sentinels
|
57
63
|
@sentinels ||= []
|
@@ -93,6 +99,11 @@ class Timberline
|
|
93
99
|
val.match(/\A[+-]?\d+\Z/) ? val.to_i : val
|
94
100
|
end
|
95
101
|
|
102
|
+
def convert_if_bool(val)
|
103
|
+
# convert potential string respresentations of boolean values to ruby booleans
|
104
|
+
val.to_s.strip.downcase == "true"
|
105
|
+
end
|
106
|
+
|
96
107
|
def configure_via_env
|
97
108
|
return unless ENV.key?("TIMBERLINE_URL")
|
98
109
|
|
@@ -105,6 +116,10 @@ class Timberline
|
|
105
116
|
@password = uri.password
|
106
117
|
|
107
118
|
params = uri.query.nil? ? {} : CGI.parse(uri.query)
|
119
|
+
%w(log_job_result_stats).each do |setting|
|
120
|
+
next unless params.key?(setting)
|
121
|
+
instance_variable_set("@#{setting}", convert_if_bool(params[setting][0]))
|
122
|
+
end
|
108
123
|
%w(timeout namespace stat_timeout max_retries).each do |setting|
|
109
124
|
next unless params.key?(setting)
|
110
125
|
instance_variable_set("@#{setting}", convert_if_int(params[setting][0]))
|
@@ -119,7 +134,7 @@ class Timberline
|
|
119
134
|
|
120
135
|
def load_from_yaml(yaml_config)
|
121
136
|
fail "Missing yaml configs!" if yaml_config.nil?
|
122
|
-
%w(database host port timeout password namespace sentinels stat_timeout max_retries).each do |setting|
|
137
|
+
%w(database host port timeout password namespace sentinels stat_timeout max_retries log_job_result_stats).each do |setting|
|
123
138
|
instance_variable_set("@#{setting}", yaml_config[setting])
|
124
139
|
end
|
125
140
|
end
|
data/lib/timberline/queue.rb
CHANGED
@@ -99,21 +99,21 @@ class Timberline
|
|
99
99
|
# @see Timberline::Queue#pop
|
100
100
|
#
|
101
101
|
def pause
|
102
|
-
@redis
|
102
|
+
@redis.set(attr("paused"), "true")
|
103
103
|
end
|
104
104
|
|
105
105
|
# Takes this queue back out of paused mode.
|
106
106
|
# @see Timberline::Queue#pop
|
107
107
|
#
|
108
108
|
def unpause
|
109
|
-
@redis
|
109
|
+
@redis.set(attr("paused"), "false")
|
110
110
|
end
|
111
111
|
|
112
112
|
# Indicates whether or not this queue is currently in paused mode.
|
113
113
|
# @return [boolean]
|
114
114
|
#
|
115
115
|
def paused?
|
116
|
-
@redis
|
116
|
+
@redis.get(attr("paused")) == "true"
|
117
117
|
end
|
118
118
|
|
119
119
|
# Given a key, create a string namespaced to this queue name.
|
@@ -249,6 +249,7 @@ class Timberline
|
|
249
249
|
private
|
250
250
|
|
251
251
|
def add_stat_for_key(key, item)
|
252
|
+
return unless Timberline.log_job_results?
|
252
253
|
Timberline.redis.xadd key, item, Time.now + Timberline.stat_timeout_seconds
|
253
254
|
end
|
254
255
|
|
data/lib/timberline/version.rb
CHANGED
@@ -38,11 +38,11 @@ describe Timberline::Queue do
|
|
38
38
|
end
|
39
39
|
|
40
40
|
it "removes the queue from redis" do
|
41
|
-
expect(Timberline.redis
|
41
|
+
expect(Timberline.redis.get("fritters")).to be_nil
|
42
42
|
end
|
43
43
|
|
44
44
|
it "removes all of the queue's attributes from redis" do
|
45
|
-
expect(Timberline.redis
|
45
|
+
expect(Timberline.redis.get("fritters:*")).to be_nil
|
46
46
|
end
|
47
47
|
|
48
48
|
it "removes the queue from the Timberline queue listing" do
|
@@ -113,6 +113,9 @@ describe Timberline::Queue do
|
|
113
113
|
let(:item) { subject.push("apple"); subject.pop }
|
114
114
|
|
115
115
|
before do
|
116
|
+
Timberline.configure do |c|
|
117
|
+
c.log_job_result_stats = true
|
118
|
+
end
|
116
119
|
subject.error_item(item)
|
117
120
|
end
|
118
121
|
|
@@ -135,6 +138,9 @@ describe Timberline::Queue do
|
|
135
138
|
|
136
139
|
context "when the item hasn't been retried before" do
|
137
140
|
before do
|
141
|
+
Timberline.configure do |c|
|
142
|
+
c.log_job_result_stats = true
|
143
|
+
end
|
138
144
|
subject.retry_item(item)
|
139
145
|
end
|
140
146
|
|
@@ -153,6 +159,9 @@ describe Timberline::Queue do
|
|
153
159
|
|
154
160
|
context "when the item has been retried before" do
|
155
161
|
before do
|
162
|
+
Timberline.configure do |c|
|
163
|
+
c.log_job_result_stats = true
|
164
|
+
end
|
156
165
|
item.retries = 3
|
157
166
|
subject.retry_item(item)
|
158
167
|
end
|
@@ -181,4 +190,64 @@ describe Timberline::Queue do
|
|
181
190
|
end
|
182
191
|
end
|
183
192
|
end
|
193
|
+
|
194
|
+
describe "#add_--_stat" do
|
195
|
+
|
196
|
+
context "error stat logging" do
|
197
|
+
|
198
|
+
subject { Timberline::Queue.new("popovers") }
|
199
|
+
let(:item) { subject.push("butter"); subject.pop }
|
200
|
+
|
201
|
+
it "doesn't log an error if log_job_result_stats is set to false (default setting)" do
|
202
|
+
subject.add_error_stat(item)
|
203
|
+
expect(subject.number_errors).to eq(0)
|
204
|
+
end
|
205
|
+
|
206
|
+
it "logs an error if log_job_result_stats is set to true" do
|
207
|
+
Timberline.configure do |c|
|
208
|
+
c.log_job_result_stats = true
|
209
|
+
end
|
210
|
+
subject.add_error_stat(item)
|
211
|
+
expect(subject.number_errors).to eq(1)
|
212
|
+
end
|
213
|
+
end
|
214
|
+
|
215
|
+
context "success stat logging" do
|
216
|
+
|
217
|
+
subject { Timberline::Queue.new("dutch_oven") }
|
218
|
+
let(:item) { subject.push("strawberry_jam"); subject.pop }
|
219
|
+
|
220
|
+
it "doesn't log a success if log_job_result_stats is set to false (default setting)" do
|
221
|
+
subject.add_success_stat(item)
|
222
|
+
expect(subject.number_successes).to eq(0)
|
223
|
+
end
|
224
|
+
|
225
|
+
it "logs a success if log_job_result_stats is set to true" do
|
226
|
+
Timberline.configure do |c|
|
227
|
+
c.log_job_result_stats = true
|
228
|
+
end
|
229
|
+
subject.add_success_stat(item)
|
230
|
+
expect(subject.number_successes).to eq(1)
|
231
|
+
end
|
232
|
+
end
|
233
|
+
|
234
|
+
context "retry stat logging" do
|
235
|
+
|
236
|
+
subject { Timberline::Queue.new("pancakes") }
|
237
|
+
let(:item) { subject.push("blueberry"); subject.pop }
|
238
|
+
|
239
|
+
it "doesn't log a retry attempt if log_job_result_stats is set to false (default setting)" do
|
240
|
+
subject.add_retry_stat(item)
|
241
|
+
expect(subject.number_retries).to eq(0)
|
242
|
+
end
|
243
|
+
|
244
|
+
it "logs a retry attempt if log_job_result_stats is set to true" do
|
245
|
+
Timberline.configure do |c|
|
246
|
+
c.log_job_result_stats = true
|
247
|
+
end
|
248
|
+
subject.add_retry_stat(item)
|
249
|
+
expect(subject.number_retries).to eq(1)
|
250
|
+
end
|
251
|
+
end
|
252
|
+
end
|
184
253
|
end
|
data/timberline.gemspec
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: timberline
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
4
|
+
version: 0.8.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tommy Morgan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-11-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: redis
|
@@ -114,14 +114,14 @@ dependencies:
|
|
114
114
|
requirements:
|
115
115
|
- - "~>"
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version: 3.
|
117
|
+
version: '3.5'
|
118
118
|
type: :development
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
122
|
- - "~>"
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version: 3.
|
124
|
+
version: '3.5'
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: pry
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
@@ -197,7 +197,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
197
197
|
version: '0'
|
198
198
|
requirements: []
|
199
199
|
rubyforge_project: timberline
|
200
|
-
rubygems_version: 2.2.3
|
200
|
+
rubygems_version: 2.5.2.3
|
201
201
|
signing_key:
|
202
202
|
specification_version: 4
|
203
203
|
summary: Timberline is a simple and extensible queuing system built in Ruby and backed
|
@@ -212,4 +212,3 @@ test_files:
|
|
212
212
|
- spec/spec_helper.rb
|
213
213
|
- spec/support/timberline_reset.rb
|
214
214
|
- spec/support/timberline_yaml.rb
|
215
|
-
has_rdoc:
|