[Backgroundrb-devel] Workers calling Workers

Orion Delwaterman orion at mh2o.com
Mon Nov 12 11:05:36 EST 2007


Hello,

 

We are working on a centralized report generating project, which calls
for data processing on different servers and then centralizes the
reports into a single project.  What we would like to do is have a
Monitor BackgrounDRb worker call another BackgrounDRb worker to process
data on a different server, and then have our Monitor Worker collect the
data and then store it according to our specs (all rails workers).

 

We are doing some initial testing and trying to get your basic Hello
World program working, so we set up two BackgrounDRb servers on the same
server, and changed the MiddleMan object to the hash MiddleMen which has
references to both servers.  From the main Rails application we are able
to access either BackgrounDRb server from the main rails application and
launch workers without issue.  However, when we try and reference a
worker from another we get a RangeError telling us that Ruby is trying
to access a recycled object (My guess is that its asking for junk Memory
Address).

 

Here's the relevant code and error.  The exception is being thrown on
the last line of the code:

 

    producer_args = {:report_id => report.id, :args => 

YAML.load(report.args)}

    producer_args.merge!(:debug_mode => true) if @debug_mode

    task.middleman.new_worker(:class => 

"#{task.worker_name}_#{TaskManager::Task::WORKER_POSTFIX}".to_sym,

                              :job_key => producer_key,

                              :args => producer_args

                              )

 

    producer = task.middleman.worker(producer_key)

 

 

# Logfile created on Fri Nov 09 17:30:03 -0500 2007 by logger.rb/1.5.2.9

20071109-17:30:03 (27237) Starting WorkerLogger

20071109-17:30:04 (27238) In ResultsWorker

20071109-17:30:20 (27238) Work started

20071109-17:30:20 (27238) 0xdba48138 is recycled object - (RangeError)

20071109-17:30:20 (27238) /usr/local/lib/ruby/1.8/drb/drb.rb:375:in 

`_id2ref'

20071109-17:30:20 (27238) /usr/local/lib/ruby/1.8/drb/drb.rb:375:in
`to_obj'

20071109-17:30:20 (27238) /usr/local/lib/ruby/1.8/drb/drb.rb:1402:in 

`to_obj'

20071109-17:30:20 (27238) /usr/local/lib/ruby/1.8/drb/drb.rb:1704:in 

`to_obj'

20071109-17:30:20 (27238) /usr/local/lib/ruby/1.8/drb/drb.rb:1005:in
`_load'

20071109-17:30:20 (27238) /usr/local/lib/ruby/1.8/drb/drb.rb:585:in
`load'

20071109-17:30:20 (27238) /usr/local/lib/ruby/1.8/drb/drb.rb:585:in
`load'

20071109-17:30:20 (27238) /usr/local/lib/ruby/1.8/thread.rb:33:in 

`exclusive'

20071109-17:30:20 (27238) /usr/local/lib/ruby/1.8/drb/drb.rb:581:in
`load'

20071109-17:30:20 (27238) /usr/local/lib/ruby/1.8/drb/drb.rb:633:in 

`recv_reply'

20071109-17:30:20 (27238) /usr/local/lib/ruby/1.8/drb/drb.rb:921:in 

`recv_reply'

20071109-17:30:20 (27238) /usr/local/lib/ruby/1.8/drb/drb.rb:1195:in 

`send_message'

20071109-17:30:20 (27238) /usr/local/lib/ruby/1.8/drb/drb.rb:1086:in 

`method_missing'

20071109-17:30:20 (27238) /usr/local/lib/ruby/1.8/drb/drb.rb:1170:in
`open'

20071109-17:30:20 (27238) /usr/local/lib/ruby/1.8/drb/drb.rb:1085:in 

`method_missing'

20071109-17:30:20 (27238) /usr/local/lib/ruby/1.8/drb/drb.rb:1107:in 

`with_friend'

20071109-17:30:20 (27238) /usr/local/lib/ruby/1.8/drb/drb.rb:1084:in 

`method_missing'

20071109-17:30:20 (27238) 

/usr/local/hydra.mh2onyc.com/current/lib/workers/task_monitoring_worker.
rb:29:in 

`do_work'

20071109-17:30:20 (27238) 

/usr/local/hydra.mh2onyc.com/current/vendor/plugins/backgroundrb/server/
lib/backgroundrb/worker.rb:56:in 

`send'

20071109-17:30:20 (27238) 

/usr/local/hydra.mh2onyc.com/current/vendor/plugins/backgroundrb/server/
lib/backgroundrb/worker.rb:56:in 

`work_thread'

20071109-17:30:20 (27238) 

/usr/local/hydra.mh2onyc.com/current/vendor/plugins/backgroundrb/server/
lib/backgroundrb/worker.rb:70:in 

`call'

20071109-17:30:20 (27238) 

/usr/local/hydra.mh2onyc.com/current/vendor/plugins/backgroundrb/server/
lib/backgroundrb/worker.rb:70:in 

`work_thread'

20071109-17:30:20 (27238) 

/usr/local/hydra.mh2onyc.com/current/vendor/plugins/backgroundrb/server/
lib/backgroundrb/worker.rb:68:in 

`initialize'

20071109-17:30:20 (27238) 

/usr/local/hydra.mh2onyc.com/current/vendor/plugins/backgroundrb/server/
lib/backgroundrb/worker.rb:68:in 

`new'

20071109-17:30:20 (27238) 

/usr/local/hydra.mh2onyc.com/current/vendor/plugins/backgroundrb/server/
lib/backgroundrb/worker.rb:68:in 

`work_thread'

20071109-17:30:20 (27238) 

/usr/local/lib/ruby/gems/1.8/gems/slave-1.2.1/lib/slave.rb:138:in `send'

20071109-17:30:20 (27238) 

/usr/local/lib/ruby/gems/1.8/gems/slave-1.2.1/lib/slave.rb:138:in 

`method_missing'

20071109-17:30:20 (27238) 

/usr/local/lib/ruby/gems/1.8/gems/slave-1.2.1/lib/slave.rb:135:in `ex'

20071109-17:30:20 (27238) /usr/local/lib/ruby/1.8/sync.rb:229:in 

`synchronize'

20071109-17:30:20 (27238) 

/usr/local/lib/ruby/gems/1.8/gems/slave-1.2.1/lib/slave.rb:135:in `ex'

20071109-17:30:20 (27238) 

/usr/local/lib/ruby/gems/1.8/gems/slave-1.2.1/lib/slave.rb:138:in 

`method_missing'

20071109-17:30:20 (27238) /usr/local/lib/ruby/1.8/drb/drb.rb:1555:in 

`__send__'

20071109-17:30:20 (27238) /usr/local/lib/ruby/1.8/drb/drb.rb:1555:in 

`perform_without_block'

20071109-17:30:20 (27238) /usr/local/lib/ruby/1.8/drb/drb.rb:1515:in 

`perform'

20071109-17:30:20 (27238) /usr/local/lib/ruby/1.8/drb/drb.rb:1589:in 

`main_loop'

20071109-17:30:20 (27238) /usr/local/lib/ruby/1.8/drb/drb.rb:1585:in
`loop'

20071109-17:30:20 (27238) /usr/local/lib/ruby/1.8/drb/drb.rb:1585:in 

`main_loop'

20071109-17:30:20 (27238) /usr/local/lib/ruby/1.8/drb/drb.rb:1581:in
`start'

20071109-17:30:20 (27238) /usr/local/lib/ruby/1.8/drb/drb.rb:1581:in 

`main_loop'

20071109-17:30:20 (27238) /usr/local/lib/ruby/1.8/drb/drb.rb:1430:in
`run'

20071109-17:30:20 (27238) /usr/local/lib/ruby/1.8/drb/drb.rb:1427:in
`start'

20071109-17:30:20 (27238) /usr/local/lib/ruby/1.8/drb/drb.rb:1427:in
`run'

20071109-17:30:20 (27238) /usr/local/lib/ruby/1.8/drb/drb.rb:1347:in 

`initialize'

20071109-17:30:20 (27238) /usr/local/lib/ruby/1.8/drb/drb.rb:1627:in
`new'

20071109-17:30:20 (27238) /usr/local/lib/ruby/1.8/drb/drb.rb:1627:in 

`start_service'

20071109-17:30:20 (27238) 

/usr/local/lib/ruby/gems/1.8/gems/slave-1.2.1/lib/slave.rb:396:in 

`initialize'

20071109-17:30:20 (27238) 

/usr/local/lib/ruby/gems/1.8/gems/slave-1.2.1/lib/slave.rb:391:in
`times'

20071109-17:30:20 (27238) 

/usr/local/lib/ruby/gems/1.8/gems/slave-1.2.1/lib/slave.rb:391:in 

`initialize'

20071109-17:30:20 (27238) 

/usr/local/hydra.mh2onyc.com/current/vendor/plugins/backgroundrb/server/
lib/backgroundrb/middleman.rb:210:in 

`new'

20071109-17:30:20 (27238) 

/usr/local/hydra.mh2onyc.com/current/vendor/plugins/backgroundrb/server/
lib/backgroundrb/middleman.rb:210:in 

`new_worker'

20071109-17:30:20 (27238) 

/usr/local/hydra.mh2onyc.com/current/vendor/plugins/backgroundrb/server/
lib/backgroundrb/thread_pool.rb:36:in 

`dispatch'

20071109-17:30:20 (27238) 

/usr/local/hydra.mh2onyc.com/current/vendor/plugins/backgroundrb/server/
lib/backgroundrb/thread_pool.rb:22:in 

`initialize'

20071109-17:30:20 (27238) 

/usr/local/hydra.mh2onyc.com/current/vendor/plugins/backgroundrb/server/
lib/backgroundrb/thread_pool.rb:22:in 

`new'

20071109-17:30:20 (27238) 

/usr/local/hydra.mh2onyc.com/current/vendor/plugins/backgroundrb/server/
lib/backgroundrb/thread_pool.rb:22:in 

`dispatch'

20071109-17:30:20 (27238) 

/usr/local/hydra.mh2onyc.com/current/vendor/plugins/backgroundrb/server/
lib/backgroundrb/middleman.rb:199:in 

`new_worker'

20071109-17:30:20 (27238) /usr/local/lib/ruby/1.8/drb/drb.rb:1555:in 

`__send__'

20071109-17:30:20 (27238) /usr/local/lib/ruby/1.8/drb/drb.rb:1555:in 

`perform_without_block'

20071109-17:30:20 (27238) /usr/local/lib/ruby/1.8/drb/drb.rb:1515:in 

`perform'

20071109-17:30:20 (27238) /usr/local/lib/ruby/1.8/drb/drb.rb:1589:in 

`main_loop'

20071109-17:30:20 (27238) /usr/local/lib/ruby/1.8/drb/drb.rb:1585:in
`loop'

20071109-17:30:20 (27238) /usr/local/lib/ruby/1.8/drb/drb.rb:1585:in 

`main_loop'

20071109-17:30:20 (27238) /usr/local/lib/ruby/1.8/drb/drb.rb:1581:in
`start'

20071109-17:30:20 (27238) /usr/local/lib/ruby/1.8/drb/drb.rb:1581:in 

`main_loop'

20071109-17:30:20 (27238) /usr/local/lib/ruby/1.8/drb/drb.rb:1430:in
`run'

20071109-17:30:20 (27238) /usr/local/lib/ruby/1.8/drb/drb.rb:1427:in
`start'

20071109-17:30:20 (27238) /usr/local/lib/ruby/1.8/drb/drb.rb:1427:in
`run'

20071109-17:30:20 (27238) /usr/local/lib/ruby/1.8/drb/drb.rb:1347:in 

`initialize'

20071109-17:30:20 (27238) /usr/local/lib/ruby/1.8/drb/drb.rb:1627:in
`new'

20071109-17:30:20 (27238) /usr/local/lib/ruby/1.8/drb/drb.rb:1627:in 

`start_service'

20071109-17:30:20 (27238) 

/usr/local/hydra.mh2onyc.com/current/vendor/plugins/backgroundrb/server/
lib/backgroundrb_server.rb:316:in 

`run'

20071109-17:30:20 (27238) 

/usr/local/lib/ruby/gems/1.8/gems/daemons-1.0.7/lib/daemons/application.
rb:194:in 

`call'

20071109-17:30:20 (27238) 

/usr/local/lib/ruby/gems/1.8/gems/daemons-1.0.7/lib/daemons/application.
rb:194:in 

`start_proc'

20071109-17:30:20 (27238) 

/usr/local/lib/ruby/gems/1.8/gems/daemons-1.0.7/lib/daemons/daemonize.rb
:192:in 

`call'

20071109-17:30:20 (27238) 

/usr/local/lib/ruby/gems/1.8/gems/daemons-1.0.7/lib/daemons/daemonize.rb
:192:in 

`call_as_daemon'

20071109-17:30:20 (27238) 

/usr/local/lib/ruby/gems/1.8/gems/daemons-1.0.7/lib/daemons/application.
rb:198:in 

`start_proc'

20071109-17:30:20 (27238) 

/usr/local/lib/ruby/gems/1.8/gems/daemons-1.0.7/lib/daemons/application.
rb:234:in 

`start'

20071109-17:30:20 (27238) 

/usr/local/lib/ruby/gems/1.8/gems/daemons-1.0.7/lib/daemons/controller.r
b:69:in 

`run'

20071109-17:30:20 (27238) 

/usr/local/lib/ruby/gems/1.8/gems/daemons-1.0.7/lib/daemons.rb:185:in 

`run_proc'

20071109-17:30:20 (27238) 

/usr/local/lib/ruby/gems/1.8/gems/daemons-1.0.7/lib/daemons/cmdline.rb:1
05:in 

`call'

20071109-17:30:20 (27238) 

/usr/local/lib/ruby/gems/1.8/gems/daemons-1.0.7/lib/daemons/cmdline.rb:1
05:in 

`catch_exceptions'

20071109-17:30:20 (27238) 

/usr/local/lib/ruby/gems/1.8/gems/daemons-1.0.7/lib/daemons.rb:184:in 

`run_proc'

20071109-17:30:20 (27238) 

/usr/local/hydra.mh2onyc.com/current/vendor/plugins/backgroundrb/server/
lib/backgroundrb_server.rb:302:in 

`run'

20071109-17:30:20 (27238) script/backgroundrb:29

 

 

 

 

 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://rubyforge.org/pipermail/backgroundrb-devel/attachments/20071112/be402b46/attachment-0001.html 


More information about the Backgroundrb-devel mailing list