workling 0.4.9.7 → 0.4.9.8
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/workling/base.rb +1 -1
- data/lib/workling/clients/memcache_queue_client.rb +7 -2
- data/lib/workling/discovery.rb +6 -2
- data/lib/workling/invokers/base.rb +1 -1
- data/lib/workling/invokers/thread_pool_poller.rb +1 -1
- data/lib/workling/invokers/threaded_poller.rb +2 -2
- data/lib/workling/routing/class_and_method_routing.rb +2 -2
- metadata +12 -4
data/lib/workling/base.rb
CHANGED
@@ -54,8 +54,13 @@ module Workling
|
|
54
54
|
|
55
55
|
# closes the memcache connection
|
56
56
|
def close
|
57
|
-
|
58
|
-
|
57
|
+
begin
|
58
|
+
self.connection.flush_all
|
59
|
+
rescue MemCache::MemCacheError => err
|
60
|
+
STDERR.puts "Memcache client doesn't respond to flush all"
|
61
|
+
ensure
|
62
|
+
self.connection.reset
|
63
|
+
end
|
59
64
|
end
|
60
65
|
|
61
66
|
# implements the client job request and retrieval
|
data/lib/workling/discovery.rb
CHANGED
@@ -3,8 +3,12 @@
|
|
3
3
|
#
|
4
4
|
module Workling
|
5
5
|
class Discovery
|
6
|
-
|
7
|
-
@@
|
6
|
+
cattr_reader :discovered_workers
|
7
|
+
@@discovered_workers ||= []
|
8
|
+
|
9
|
+
def self.add_worker(klass)
|
10
|
+
@@discovered_workers << klass
|
11
|
+
end
|
8
12
|
|
9
13
|
# requires worklings so that they are added to routing.
|
10
14
|
def self.discover!
|
@@ -93,7 +93,7 @@ module Workling
|
|
93
93
|
# Returns the complete set of active routes
|
94
94
|
#
|
95
95
|
def routes
|
96
|
-
|
96
|
+
Workling::Discovery.discovered_workers.map { |clazz| @routing.queue_names_routing_class(clazz) }.flatten
|
97
97
|
end
|
98
98
|
|
99
99
|
# Thanks for this Brent!
|
@@ -55,7 +55,7 @@ module Workling
|
|
55
55
|
logger.info("Starting ThreadPoolPoller...")
|
56
56
|
|
57
57
|
# Determine which queues need checking
|
58
|
-
Workling::Discovery.
|
58
|
+
Workling::Discovery.discovered_workers.map do |klass|
|
59
59
|
@pollers.synchronize do
|
60
60
|
# Polls the backing queue for jobs to be done
|
61
61
|
@pollers << Thread.new do
|
@@ -21,7 +21,7 @@ module Workling
|
|
21
21
|
|
22
22
|
def listen
|
23
23
|
# Create a thread for each worker.
|
24
|
-
Workling::Discovery.
|
24
|
+
Workling::Discovery.discovered_workers.each do |clazz|
|
25
25
|
logger.debug("Discovered listener #{clazz}")
|
26
26
|
@workers.add(Thread.new(clazz) { |c| clazz_listen(c) })
|
27
27
|
end
|
@@ -42,7 +42,7 @@ module Workling
|
|
42
42
|
# Check if all Worker threads have been started.
|
43
43
|
def started?
|
44
44
|
logger.debug("checking if started... list size is #{ worker_threads }")
|
45
|
-
Workling::Discovery.
|
45
|
+
Workling::Discovery.discovered_workers.size == worker_threads
|
46
46
|
end
|
47
47
|
|
48
48
|
# number of worker threads running
|
@@ -41,7 +41,7 @@ module Workling
|
|
41
41
|
|
42
42
|
private
|
43
43
|
def build
|
44
|
-
Workling::Discovery.
|
44
|
+
Workling::Discovery.discovered_workers.each do |clazz|
|
45
45
|
methods = clazz.public_instance_methods(false)
|
46
46
|
methods.each do |method|
|
47
47
|
next if method == 'create' # Skip the create method
|
@@ -52,4 +52,4 @@ module Workling
|
|
52
52
|
end
|
53
53
|
end
|
54
54
|
end
|
55
|
-
end
|
55
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: workling
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 4
|
8
|
+
- 9
|
9
|
+
- 8
|
10
|
+
version: 0.4.9.8
|
5
11
|
platform: ruby
|
6
12
|
authors:
|
7
13
|
- Rany Keddo
|
@@ -77,18 +83,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
77
83
|
requirements:
|
78
84
|
- - ">="
|
79
85
|
- !ruby/object:Gem::Version
|
86
|
+
segments:
|
87
|
+
- 0
|
80
88
|
version: "0"
|
81
|
-
version:
|
82
89
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
83
90
|
requirements:
|
84
91
|
- - ">="
|
85
92
|
- !ruby/object:Gem::Version
|
93
|
+
segments:
|
94
|
+
- 0
|
86
95
|
version: "0"
|
87
|
-
version:
|
88
96
|
requirements: []
|
89
97
|
|
90
98
|
rubyforge_project:
|
91
|
-
rubygems_version: 1.3.
|
99
|
+
rubygems_version: 1.3.6
|
92
100
|
signing_key:
|
93
101
|
specification_version: 2
|
94
102
|
summary: easily do background work in rails, without commiting to a particular runner. comes with starling, bj and spawn runners.
|