blaxter-delayed_job 2.1.3 → 2.1.4

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/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