timberline 0.8.5 → 0.8.6
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/.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:
|