[Backgroundrb-devel] strange issue with backgroundrb behind apache/lighttpd

skaar skaar at waste.org
Wed Nov 1 12:52:54 EST 2006


any chance you could try to use 'results' for this, rather than an
instance variable? 

is there a single worker instance serving different user sessions?

/skaar


* Chris Hall (christopher.k.hall at gmail.com) [061101 07:50]:
> I'm getting strange data back from my worker whenever I run our rails
> app with more than one dispatcher under lighttpd.
> 
> just to give some info on what the app does:
> 
> user submits data to rails app.  rails app hands off data to worker,
> which goes and does it's thing, storing results in an array of
> response objects (the array is an attribute of the worker).  the
> response object includes DRbUndumped.
> 
> Back in the browser, ajax requests are made at 1 sec intervals to the
> rails app to check on how the worker is progressing.  the app calls a
> method on the worker to get back any finished responses.  an array of
> responses is passed back to the app and the data is used to update the
> browser.  the size of the array is also used to decrement a counter to
> show the user how much work is left to complete until it gets to zero.
> 
> When we have 1 dispatcher running, the app works great.  as soon as we
> add 2 or more dispatchers to lighttpd, we get strange results in the
> counter.  the counter will start displaying negative values.
> 
> Now, what i think is happening is now that we introduced 2
> dispatchers, the ajax request that is run every second is not queuing
> up as it would with 1 dispatcher and we have overlap of requests
> getting back the same data.  i tested this by changing the request
> interval to 2 seconds and the counter now shows the correct values.
> 
> but we have another problem.  when testing with 2 or more people at
> the same time, we get the following error several times in the
> development log:
> 
> Processing SearchController#get_responses (for 127.0.0.1 at 2006-11-01 07:47:07)
>  [POST]
>   Session ID: 671f4ba93603f34e036d9bbc65919ca7
>   Parameters: {"action"=>"get_responses", "controller"=>"search"}
> getting responses
> 
> 
> RangeError (0xdb677f22 is recycled object):
>     (druby://localhost:42531) /usr/lib/ruby/1.8/drb/drb.rb:375:in `_id2ref'
>     (druby://localhost:42531) /usr/lib/ruby/1.8/drb/drb.rb:375:in `to_obj'
>     (druby://localhost:42531) /usr/lib/ruby/1.8/drb/drb.rb:1402:in `to_obj'
>     (druby://localhost:42531) /usr/lib/ruby/1.8/drb/drb.rb:1704:in `to_obj'
>     (druby://localhost:42531) /usr/lib/ruby/1.8/drb/drb.rb:613:in `recv_request'
>     (druby://localhost:42531) /usr/lib/ruby/1.8/drb/drb.rb:911:in `recv_request'
>     (druby://localhost:42531) /usr/lib/ruby/1.8/drb/drb.rb:1530:in `init_with_cl
> ient'
>     (druby://localhost:42531) /usr/lib/ruby/1.8/drb/drb.rb:1542:in `setup_messag
> e'
>     (druby://localhost:42531) /usr/lib/ruby/1.8/drb/drb.rb:1494:in `perform'
>     (druby://localhost:42531) /usr/lib/ruby/1.8/drb/drb.rb:1589:in `main_loop'
>     (druby://localhost:42531) /usr/lib/ruby/1.8/drb/drb.rb:1585:in `loop'
>     (druby://localhost:42531) /usr/lib/ruby/1.8/drb/drb.rb:1585:in `main_loop'
>     (druby://localhost:42531) /usr/lib/ruby/1.8/drb/drb.rb:1581:in `start'
>     (druby://localhost:42531) /usr/lib/ruby/1.8/drb/drb.rb:1581:in `main_loop'
>     (druby://localhost:42531) /usr/lib/ruby/1.8/drb/drb.rb:1430:in `run'
>     (druby://localhost:42531) /usr/lib/ruby/1.8/drb/drb.rb:1427:in `start'
>     (druby://localhost:42531) /usr/lib/ruby/1.8/drb/drb.rb:1427:in `run'
>     (druby://localhost:42531) /usr/lib/ruby/1.8/drb/drb.rb:1347:in `initialize'
>     (druby://localhost:42531) /usr/lib/ruby/1.8/drb/drb.rb:1627:in `new'
>     (druby://localhost:42531) /usr/lib/ruby/1.8/drb/drb.rb:1627:in `start_servic
> e'
>     (druby://localhost:42531) /usr/lib/ruby/gems/1.8/gems/rails-1.1.6/lib/breakp
> oint.rb:375:in `activate_drb'
>     (druby://localhost:42531) /usr/lib/ruby/gems/1.8/gems/rails-1.1.6/lib/dispat
> cher.rb:81:in `prepare_breakpoint'
>     (druby://localhost:42531) /usr/lib/ruby/gems/1.8/gems/rails-1.1.6/lib/dispat
> cher.rb:68:in `prepare_application'
>     (druby://localhost:42531) /usr/lib/ruby/gems/1.8/gems/rails-1.1.6/lib/dispat
> cher.rb:37:in `dispatch'
>     (druby://localhost:42531) /usr/lib/ruby/gems/1.8/gems/rails-1.1.6/lib/fcgi_h
> andler.rb:150:in `process_request'
>     (druby://localhost:42531) /usr/lib/ruby/gems/1.8/gems/rails-1.1.6/lib/fcgi_h
> andler.rb:54:in `process!'
>     (druby://localhost:42531) /usr/lib/ruby/site_ruby/1.8/fcgi.rb:612:in `each_c
> gi'
>     (druby://localhost:42531) /usr/lib/ruby/site_ruby/1.8/fcgi.rb:117:in `sessio
> n'
>     (druby://localhost:42531) /usr/lib/ruby/site_ruby/1.8/fcgi.rb:104:in `each_r
> equest'
>     (druby://localhost:42531) /usr/lib/ruby/site_ruby/1.8/fcgi.rb:36:in `each'
>     (druby://localhost:42531) /usr/lib/ruby/site_ruby/1.8/fcgi.rb:609:in `each_c
> gi'
>     (druby://localhost:42531) /usr/lib/ruby/gems/1.8/gems/rails-1.1.6/lib/fcgi_h
> andler.rb:53:in `process!'
>     (druby://localhost:42531) /usr/lib/ruby/gems/1.8/gems/rails-1.1.6/lib/fcgi_h
> andler.rb:23:in `process!'
>     (druby://localhost:42531) /home/chall/radrails/workspace/chip2/public/dispat
> ch.fcgi:24
>     (druby://localhost:22222) /usr/lib/ruby/1.8/drb/invokemethod.rb:10:in `block
> _yield'
>     (druby://localhost:22222) /usr/lib/ruby/1.8/drb/invokemethod.rb:17:in `perfo
> rm_with_block'
>     (druby://localhost:22222) /usr/lib/ruby/1.8/drb/invokemethod.rb:14:in `each'
>     /app/controllers/search_controller.rb:123:in `__bind_1162385227_815142'
>     /usr/lib/ruby/gems/1.8/gems/activesupport-1.3.1/lib/active_support/core_ext/
> object/extending.rb:44:in `[]'
>     /usr/lib/ruby/gems/1.8/gems/activesupport-1.3.1/lib/active_support/core_ext/
> object/extending.rb:44:in `instance_exec'
>     /usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_view/helpers/protot
> ype_helper.rb:378:in `initialize'
>     /usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/base.rb:
> 687:in `new'
>     /usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/base.rb:
> 687:in `render_with_no_layout'
>     /usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/layout.r
> b:253:in `render_without_benchmark'
>     /usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/benchmar
> king.rb:53:in `render'
>     /usr/lib/ruby/1.8/benchmark.rb:293:in `measure'
>     /usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/benchmar
> king.rb:53:in `render'
>     /app/controllers/search_controller.rb:110:in `get_responses'
>     /usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/base.rb:
> 941:in `send'
>     /usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/base.rb:
> 941:in `perform_action_without_filters'
>     /usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/filters.
> rb:368:in `perform_action_without_benchmark'
>     /usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/benchmar
> king.rb:69:in `perform_action_without_rescue'
>     /usr/lib/ruby/1.8/benchmark.rb:293:in `measure'
>     /usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/benchmar
> king.rb:69:in `perform_action_without_rescue'
>     /usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/rescue.r
> b:82:in `perform_action'
>     /usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/base.rb:
> 408:in `send'
>     /usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/filters.
> rb:377:in `process_without_session_management_support'
>     /usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/session_
> management.rb:117:in `process'
>     /usr/lib/ruby/gems/1.8/gems/rails-1.1.6/lib/dispatcher.rb:38:in `dispatch'
>     /usr/lib/ruby/gems/1.8/gems/rails-1.1.6/lib/fcgi_handler.rb:150:in `process_
> request'
>     /usr/lib/ruby/gems/1.8/gems/rails-1.1.6/lib/fcgi_handler.rb:54:in `process!'
>     /usr/lib/ruby/site_ruby/1.8/fcgi.rb:612:in `each_cgi'
>     /usr/lib/ruby/site_ruby/1.8/fcgi.rb:117:in `session'
>     /usr/lib/ruby/site_ruby/1.8/fcgi.rb:104:in `each_request'
>     /usr/lib/ruby/site_ruby/1.8/fcgi.rb:36:in `each'
>     /usr/lib/ruby/site_ruby/1.8/fcgi.rb:609:in `each_cgi'
>     /usr/lib/ruby/gems/1.8/gems/rails-1.1.6/lib/fcgi_handler.rb:53:in `process!'
>     /usr/lib/ruby/gems/1.8/gems/rails-1.1.6/lib/fcgi_handler.rb:23:in `process!'
>     /home/chall/radrails/workspace/chip2/public/dispatch.fcgi:24
> 
> 
> Rendering /usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/te
> mplates/rescues/layout.rhtml (500 Internal Error)
> 
> 
> we can't figure out where the heck this is happening.  there are only
> 2 references to some controller code on lines 123 and 110 which are
> 
> 110: render :update do |page|
> 
> 123: done_responses.each do |r|
> 
> if anyone has any idea on what might be happening, we would truly appreciate it.
> 
> Chris
> _______________________________________________
> Backgroundrb-devel mailing list
> Backgroundrb-devel at rubyforge.org
> http://rubyforge.org/mailman/listinfo/backgroundrb-devel

-- 
----------------------------------------------------------------------
|\|\             where in the       |          s_u_b_s_t_r_u_c_t_i_o_n 
| | >===========  W.A.S.T.E.        |                  genarratologies 
|/|/    (_)     is the wisdom       |                  skaar at waste.org
----------------------------------------------------------------------


More information about the Backgroundrb-devel mailing list