mobilize-base 1.0.4 → 1.0.5
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.
data/lib/mobilize-base.rb
CHANGED
@@ -70,7 +70,7 @@ if File.exists?(mongoid_config_path)
|
|
70
70
|
end
|
71
71
|
require 'google_drive'
|
72
72
|
require 'resque'
|
73
|
-
require "mobilize-base/
|
73
|
+
require "mobilize-base/handlers/resque"
|
74
74
|
#specify appropriate redis port per resque.yml
|
75
75
|
Resque.redis = "127.0.0.1:#{Mobilize::Resque.config['redis_port']}"
|
76
76
|
require 'popen4'
|
@@ -24,6 +24,8 @@ module Mobilize
|
|
24
24
|
return working_workers if state == 'working'
|
25
25
|
idle_workers = workers.select{|w| w.job['queue'].nil?}
|
26
26
|
return idle_workers if state == 'idle'
|
27
|
+
stale_workers = workers.select{|w| Time.parse(w.started) < Jobtracker.deployed_at}
|
28
|
+
return stale_workers if state == 'stale'
|
27
29
|
timeout_workers = workers.select{|w| w.job['payload'] and w.job['payload']['class']!='Jobtracker' and w.job['runat'] < (Time.now.utc - Jobtracker.max_run_time)}
|
28
30
|
return timeout_workers if state == 'timeout'
|
29
31
|
end
|
@@ -139,6 +141,18 @@ module Mobilize
|
|
139
141
|
return true
|
140
142
|
end
|
141
143
|
|
144
|
+
def Resque.kill_idle_stale_workers
|
145
|
+
idle_pids = Resque.workers('idle').select{|w| w.job=={}}.map{|w| w.to_s.split(":").second}
|
146
|
+
stale_pids = Resque.workers('stale').select{|w| w.job=={}}.map{|w| w.to_s.split(":").second}
|
147
|
+
idle_stale_pids = (idle_pids & stale_pids)
|
148
|
+
if idle_stale_pids.length == 0
|
149
|
+
return false
|
150
|
+
else
|
151
|
+
"kill #{idle_stale_pids.join(" ")}".bash
|
152
|
+
end
|
153
|
+
return true
|
154
|
+
end
|
155
|
+
|
142
156
|
def Resque.kill_workers(count=nil)
|
143
157
|
pids = Resque.workers.map{|w| w.to_s.split(":").second}
|
144
158
|
if count.to_i > pids.length or count == 0
|
@@ -200,6 +200,19 @@ module Mobilize
|
|
200
200
|
return true
|
201
201
|
end
|
202
202
|
|
203
|
+
def Jobtracker.deployed_at
|
204
|
+
#assumes deploy is as of last commit, or as of last deploy time
|
205
|
+
#as given by the least recently updated file in the root folder
|
206
|
+
deploy_time = begin
|
207
|
+
%{git log -1 --format="%cd"}.bash
|
208
|
+
rescue
|
209
|
+
ls_string = "ls -l #{ENV['PWD']}/*".bash
|
210
|
+
ls_rows = ls_string.split("\n").map{|lss| lss.strip.split(" ")}
|
211
|
+
mod_times = ls_rows.select{|lsr| lsr.length == 8}.map{|lsr| lsr[5..6].join(" ")}
|
212
|
+
mod_times.min
|
213
|
+
end
|
214
|
+
Time.parse(deploy_time)
|
215
|
+
end
|
203
216
|
|
204
217
|
#test methods
|
205
218
|
def Jobtracker.restart_test_redis
|
@@ -30,16 +30,7 @@ module Mobilize
|
|
30
30
|
def runner_path
|
31
31
|
u = self
|
32
32
|
prefix = "Runner_"
|
33
|
-
suffix = ""
|
34
|
-
if Base.env == 'development'
|
35
|
-
suffix = "(dev)"
|
36
|
-
elsif Base.env == 'test'
|
37
|
-
suffix = "(test)"
|
38
|
-
elsif Base.env == 'production'
|
39
|
-
suffix = ""
|
40
|
-
else
|
41
|
-
raise "Invalid environment"
|
42
|
-
end
|
33
|
+
suffix = (Base.env == 'production' ? "" : "(#{Base.env})")
|
43
34
|
title = [prefix,u.name,suffix,"/jobs"].join
|
44
35
|
return title
|
45
36
|
end
|
data/lib/mobilize-base/rakes.rb
CHANGED
@@ -2,11 +2,10 @@
|
|
2
2
|
# will give you the resque tasks
|
3
3
|
|
4
4
|
namespace :mobilize do
|
5
|
+
require 'mobilize-base'
|
5
6
|
desc "Start a Resque worker"
|
6
7
|
task :work do
|
7
|
-
require 'resque'
|
8
8
|
begin
|
9
|
-
require 'mobilize-base'
|
10
9
|
#require specified mobilize gems
|
11
10
|
Mobilize::Base.config('jobtracker')['extensions'].each do |e|
|
12
11
|
require e
|
@@ -24,6 +23,14 @@ namespace :mobilize do
|
|
24
23
|
|
25
24
|
worker.work(ENV['INTERVAL'] || 5) # interval, will block
|
26
25
|
end
|
26
|
+
desc "Kill idle workers not in sync with repo"
|
27
|
+
task :kill_idle_stale_workers do
|
28
|
+
Mobilize::Jobtracker.kill_idle_stale_workers
|
29
|
+
end
|
30
|
+
desc "Make sure workers are prepped"
|
31
|
+
task :prep_workers do
|
32
|
+
Mobilize::Jobtracker.prep_workers
|
33
|
+
end
|
27
34
|
end
|
28
35
|
namespace :mobilize_base do
|
29
36
|
desc "Set up config and log folders and files"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mobilize-base
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-12-
|
12
|
+
date: 2012-12-11 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
@@ -211,7 +211,6 @@ files:
|
|
211
211
|
- lib/mobilize-base/extensions/google_drive/worksheet.rb
|
212
212
|
- lib/mobilize-base/extensions/hash.rb
|
213
213
|
- lib/mobilize-base/extensions/object.rb
|
214
|
-
- lib/mobilize-base/extensions/resque.rb
|
215
214
|
- lib/mobilize-base/extensions/string.rb
|
216
215
|
- lib/mobilize-base/handlers/email.rb
|
217
216
|
- lib/mobilize-base/handlers/gbook.rb
|
@@ -219,6 +218,7 @@ files:
|
|
219
218
|
- lib/mobilize-base/handlers/gfile.rb
|
220
219
|
- lib/mobilize-base/handlers/gridfs.rb
|
221
220
|
- lib/mobilize-base/handlers/gsheet.rb
|
221
|
+
- lib/mobilize-base/handlers/resque.rb
|
222
222
|
- lib/mobilize-base/jobtracker.rb
|
223
223
|
- lib/mobilize-base/models/dataset.rb
|
224
224
|
- lib/mobilize-base/models/job.rb
|
@@ -252,12 +252,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
252
252
|
- - ! '>='
|
253
253
|
- !ruby/object:Gem::Version
|
254
254
|
version: '0'
|
255
|
+
segments:
|
256
|
+
- 0
|
257
|
+
hash: 64363452051803879
|
255
258
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
256
259
|
none: false
|
257
260
|
requirements:
|
258
261
|
- - ! '>='
|
259
262
|
- !ruby/object:Gem::Version
|
260
263
|
version: '0'
|
264
|
+
segments:
|
265
|
+
- 0
|
266
|
+
hash: 64363452051803879
|
261
267
|
requirements: []
|
262
268
|
rubyforge_project: mobilize-base
|
263
269
|
rubygems_version: 1.8.24
|
@@ -271,4 +277,3 @@ test_files:
|
|
271
277
|
- test/mobilize-base_test.rb
|
272
278
|
- test/redis-test.conf
|
273
279
|
- test/test_helper.rb
|
274
|
-
has_rdoc:
|