Created
January 19, 2010 10:59
-
-
Save koyachi/280855 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff -r -u ./lib/q4m/client.rb ../xxx/vendor/gems/ruby/1.8/dirs/q4m/lib/q4m/client.rb | |
--- ./lib/q4m/client.rb 2009-12-22 16:53:28.000000000 +0900 | |
+++ ../xxx/vendor/gems/ruby/1.8/dirs/q4m/lib/q4m/client.rb 2010-01-19 18:55:46.000000000 +0900 | |
@@ -3,6 +3,7 @@ | |
class Q4M::Client | |
def self.destroy(_dbh, _owner_mode) | |
proc { | |
+ p "[Q4M::Client.destroy] #{_dbh.inspect}, #{_owner_mode}" | |
if _dbh | |
_dbh.do "SELECT queue_abort();" if _owner_mode == 1 | |
_dbh.do "SELECT queue_end();" | |
@@ -29,7 +30,10 @@ | |
@__table = nil | |
@__res = nil | |
- ObjectSpace.define_finalizer self, self.class.destroy(@_dbh, @owner_mode) | |
+ # 2010-01-19 koyachi | |
+# ObjectSpace.define_finalizer self, self.class.destroy(@_dbh, @owner_mode) | |
+ destroyer = self.class.destroy(@_dbh, @owner_mode) | |
+ ObjectSpace.define_finalizer self, destroyer | |
end | |
def _connect | |
@@ -81,6 +85,7 @@ | |
end | |
def queue_end | |
+ p "[Q4M::Client] SELECT queue_end();" | |
_dbh.do "SELECT queue_end();" | |
end | |
@@ -88,6 +93,8 @@ | |
# v ワーカー1つで複数キュー指定時は優先度キューとして動作 | |
# v 複数ワーカーで複数キュー指定時 | |
def start_worker(workers, config=nil) | |
+ p "[Q4M::Client#start_worker] #{workers.inspect}" | |
+ p "[Q4M::Client#start_worker] #{config.inspect}" | |
worker_instances = workers.map {|w| w.new config} | |
handlers = {} | |
worker_instances.each do |wi| | |
@@ -100,13 +107,24 @@ | |
queue_tables = [worker_instances.map{|w| w.queue_tables}.flatten] | |
loop do | |
table = self.next(queue_tables, 10) | |
+ p "[Q4M::Client#start_worker.next]" | |
if table | |
+ p "[Q4M::Client#start_worker.next] #{table.inspect}" | |
table = table.to_s | |
result = self.fetch_hash table | |
+ p "[Q4M::Client#start_worker.next] before work" | |
handlers[table].__send__ 'work', result, table | |
+ p "[Q4M::Client#start_worker.next] before queue_end" | |
self.queue_end | |
+ | |
+ # 2010-01-19 koyachi | |
+ ObjectSpace.undefine_finalizer self | |
+# ObjectSpace.define_finalizer self, self.class.destroy(@_dbh, @owner_mode) | |
+ destroyer = self.class.destroy(@_dbh, @owner_mode) | |
+ ObjectSpace.define_finalizer self, destroyer | |
end | |
sleep 1 | |
+ p "[Q4M::Client#start_worker] sleep 1..." | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment