Alessio Bernesco Làvore
2007-Feb-22 14:29 UTC
[Backgroundrb-devel] failed to find slave socket - (RuntimeError)
Hi everyone, I''ve a class that try to spawn two workers, every 5 seconds. The code is something like: while true do MiddleMan.new_worker(:class => :researches_worker,:job_key => :researches) MiddleMan.new_worker(:class => :products_worker,:job_key => :products) sleep(5) end I''m using ":job_key", so if a worker hasn''t already ended its work after five seconds, it''s not duplicated. The code inside the worker is something like: class ResearchesWorker < BackgrounDRb::Worker::RailsBase def do_work(args) completed = RunningResearch.find(:all,:conditions => ["endtime < ?",Time.now]) for complete in completed complete.complete end self.delete end end ResearchesWorker.register After 4 or 5 minutes of working, the worker stops to respond and i''ve this error in the log file: 20070222-15:13:37 (15574) failed to find slave socket - (RuntimeError) 20070222-15:13:37 (15574) /usr/local/lib/ruby/gems/1.8/gems/ slave-1.2.0/lib/slave.rb:435:in `initialize'' 20070222-15:13:37 (15574) /Users/abernesco/Documents/ruby/alfaomega/ vendor/plugins/backgroundrb/server/lib/backgroundrb/middleman.rb: 210:in `new'' 20070222-15:13:37 (15574) /Users/abernesco/Documents/ruby/alfaomega/ vendor/plugins/backgroundrb/server/lib/backgroundrb/middleman.rb: 210:in `new_worker'' 20070222-15:13:37 (15574) /Users/abernesco/Documents/ruby/alfaomega/ vendor/plugins/backgroundrb/server/lib/backgroundrb/thread_pool.rb: 36:in `dispatch'' 20070222-15:13:37 (15574) /Users/abernesco/Documents/ruby/alfaomega/ vendor/plugins/backgroundrb/server/lib/backgroundrb/thread_pool.rb: 22:in `initialize'' 20070222-15:13:37 (15574) /Users/abernesco/Documents/ruby/alfaomega/ vendor/plugins/backgroundrb/server/lib/backgroundrb/thread_pool.rb: 22:in `new'' 20070222-15:13:37 (15574) /Users/abernesco/Documents/ruby/alfaomega/ vendor/plugins/backgroundrb/server/lib/backgroundrb/thread_pool.rb: 22:in `dispatch'' 20070222-15:13:37 (15574) /Users/abernesco/Documents/ruby/alfaomega/ vendor/plugins/backgroundrb/server/lib/backgroundrb/middleman.rb: 199:in `new_worker'' I''ve try to keep the workers class as simple and light as i can... any advice about? Thanks, ale.
Ezra Zygmuntowicz
2007-Feb-22 18:57 UTC
[Backgroundrb-devel] failed to find slave socket - (RuntimeError)
Hi- You are trying to spawn new workers too fast for the new architecture in bdrb. With a job like this that you want to run every 5 seconds you are way better of creating a single worker that lives forever and just does a loop and sleep then does the work you want. Trying to spawn new workers every 5 seconds will work with the old version of the plugin but not with the new version. Try something more like this: class ResearchesWorker < BackgrounDRb::Worker::RailsBase def do_work(args) loop { completed = RunningResearch.find(:all,:conditions => ["endtime < ?",Time.now]) for complete in completed complete.complete end sleep 5 } end end ResearchesWorker.register Then just have this worker get started at server boot time or whatever and run forever. -Ezra On Feb 22, 2007, at 6:29 AM, Alessio Bernesco L?vore wrote:> Hi everyone, > > I''ve a class that try to spawn two workers, every 5 seconds. > > The code is something like: > > while true do > MiddleMan.new_worker(:class => :researches_worker,:job_key > => :researches) > MiddleMan.new_worker(:class => :products_worker,:job_key > => :products) > sleep(5) > end > > I''m using ":job_key", so if a worker hasn''t already ended its work > after five seconds, it''s not duplicated. > > The code inside the worker is something like: > > class ResearchesWorker < BackgrounDRb::Worker::RailsBase > def do_work(args) > completed = RunningResearch.find(:all,:conditions => ["endtime > < ?",Time.now]) > for complete in completed > complete.complete > end > self.delete > end > end > ResearchesWorker.register > > After 4 or 5 minutes of working, the worker stops to respond and i''ve > this error in the log file: > > 20070222-15:13:37 (15574) failed to find slave socket - (RuntimeError) > 20070222-15:13:37 (15574) /usr/local/lib/ruby/gems/1.8/gems/ > slave-1.2.0/lib/slave.rb:435:in `initialize'' > 20070222-15:13:37 (15574) /Users/abernesco/Documents/ruby/alfaomega/ > vendor/plugins/backgroundrb/server/lib/backgroundrb/middleman.rb: > 210:in `new'' > 20070222-15:13:37 (15574) /Users/abernesco/Documents/ruby/alfaomega/ > vendor/plugins/backgroundrb/server/lib/backgroundrb/middleman.rb: > 210:in `new_worker'' > 20070222-15:13:37 (15574) /Users/abernesco/Documents/ruby/alfaomega/ > vendor/plugins/backgroundrb/server/lib/backgroundrb/thread_pool.rb: > 36:in `dispatch'' > 20070222-15:13:37 (15574) /Users/abernesco/Documents/ruby/alfaomega/ > vendor/plugins/backgroundrb/server/lib/backgroundrb/thread_pool.rb: > 22:in `initialize'' > 20070222-15:13:37 (15574) /Users/abernesco/Documents/ruby/alfaomega/ > vendor/plugins/backgroundrb/server/lib/backgroundrb/thread_pool.rb: > 22:in `new'' > 20070222-15:13:37 (15574) /Users/abernesco/Documents/ruby/alfaomega/ > vendor/plugins/backgroundrb/server/lib/backgroundrb/thread_pool.rb: > 22:in `dispatch'' > 20070222-15:13:37 (15574) /Users/abernesco/Documents/ruby/alfaomega/ > vendor/plugins/backgroundrb/server/lib/backgroundrb/middleman.rb: > 199:in `new_worker'' > > > I''ve try to keep the workers class as simple and light as i can... > any advice about? > > Thanks, > ale. > _______________________________________________ > Backgroundrb-devel mailing list > Backgroundrb-devel at rubyforge.org > http://rubyforge.org/mailman/listinfo/backgroundrb-devel >-- Ezra Zygmuntowicz -- Lead Rails Evangelist -- ez at engineyard.com -- Engine Yard, Serious Rails Hosting -- (866) 518-YARD (9273)