blaxter-delayed_job 2.1.3 → 2.1.4

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 2.1.3
1
+ 2.1.4
@@ -1,3 +1,5 @@
1
+ require 'thread'
2
+
1
3
  # Handle asynchronously launch of jobs, one per grouped value
2
4
  #
3
5
  # It needs the following method to be defined:
@@ -32,6 +34,7 @@ module Delayed
32
34
  def initialize_launcher(max_active_jobs=MAX_ACTIVE_JOBS)
33
35
  @max_active_jobs = max_active_jobs
34
36
  @jobs = {}
37
+ @sem = Mutex.new
35
38
  end
36
39
 
37
40
  # Launch the job in a thread and register it. Returns whether the job
@@ -84,6 +87,12 @@ module Delayed
84
87
  @jobs.size
85
88
  end
86
89
 
90
+ def kill_threads!
91
+ each_job_in_execution do |job, started_at, thread|
92
+ puts "Killing #{job.name}"
93
+ thread.terminate
94
+ end
95
+ end
87
96
  # ^ public methods -------------------------------------------------------
88
97
  private
89
98
  # v private methods ------------------------------------------------------
@@ -111,15 +120,19 @@ module Delayed
111
120
  end
112
121
 
113
122
  def unregister_job(job)
114
- @jobs.delete get_object(job)
123
+ @sem.synchronize do
124
+ @jobs.delete get_object(job)
125
+ end
115
126
  end
116
127
 
117
128
  def register_job(job, thread)
118
- @jobs[get_object(job)] = {
119
- :thread => thread,
120
- :job => job,
121
- :started_at => Time.now
122
- }
129
+ @sem.synchronize do
130
+ @jobs[get_object(job)] = {
131
+ :thread => thread,
132
+ :job => job,
133
+ :started_at => Time.now
134
+ }
135
+ end
123
136
  end
124
137
 
125
138
  def get_object(job)
@@ -72,6 +72,7 @@ module Delayed
72
72
  end
73
73
  break if self.exit
74
74
  end
75
+ kill_threads!
75
76
  ensure
76
77
  Job.clear_locks! name
77
78
  say "<=== Finishing job worker #{name}"
data/lib/delayed_job.rb CHANGED
@@ -3,11 +3,11 @@ autoload :ActiveRecord, 'activerecord'
3
3
  require File.dirname(__FILE__) + '/delayed/message_sending'
4
4
  require File.dirname(__FILE__) + '/delayed/performable_method'
5
5
  require File.dirname(__FILE__) + '/delayed/yaml_ext'
6
- require File.dirname(__FILE__) + '/delayed/job_handler'
6
+ require File.dirname(__FILE__) + '/delayed/job_launcher'
7
7
  require File.dirname(__FILE__) + '/delayed/job'
8
8
  require File.dirname(__FILE__) + '/delayed/worker'
9
9
 
10
- Object.send(:include, Delayed::MessageSending)
10
+ Object.send(:include, Delayed::MessageSending)
11
11
  Module.send(:include, Delayed::MessageSending::ClassMethods)
12
12
 
13
13
  if defined?(Merb::Plugins)
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: blaxter-delayed_job
3
3
  version: !ruby/object:Gem::Version
4
- hash: 13
4
+ hash: 3
5
5
  prerelease: false
6
6
  segments:
7
7
  - 2
8
8
  - 1
9
- - 3
10
- version: 2.1.3
9
+ - 4
10
+ version: 2.1.4
11
11
  platform: ruby
12
12
  authors:
13
13
  - "Tobias L\xC3\xBCtke"
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2010-09-28 00:00:00 +02:00
19
+ date: 2010-10-19 00:00:00 +02:00
20
20
  default_executable:
21
21
  dependencies: []
22
22
 
@@ -35,7 +35,7 @@ files:
35
35
  - generators/delayed_job/templates/migration.rb
36
36
  - init.rb
37
37
  - lib/delayed/job.rb
38
- - lib/delayed/job_handler.rb
38
+ - lib/delayed/job_launcher.rb
39
39
  - lib/delayed/message_sending.rb
40
40
  - lib/delayed/performable_method.rb
41
41
  - lib/delayed/worker.rb