[Backgroundrb-devel] Invalid Worker Problem

Brent Collier brentmc79 at gmail.com
Wed Sep 10 10:23:07 EDT 2008


I'm having a problem where whenever I try to call a worker method, something
blows up saying that the worker can't be found.  In debugging my code, I can
see that the worker was found and that the problem doesn't arrise until I
attempt to call a method on it, async or not.  My code looks like this:

MiddleMan.new_worker(:worker => :geocode_worker, :worker_key => "123")
sleep(1)  # OSX hack!
geocode_worker = MiddleMan.worker(:geocode_worker, :worker_key => "123")
geocode_worker.async_geocode_address(:arg => data)

Querying the geocode_worker in the debugger, I get:

#<BackgrounDRb::RailsWorkerProxy:0x261c9dc
@middle_man=#<BackgrounDRb::ClusterConnection:0x2205ad8 @request_count=2,
@bdrb_servers=[#<struct #<Class:0x2205a24> ip="127.0.0.1", port=11006>],
@round_robin=[0], @last_polled_time=Wed Sep 10 13:58:03 +0000 2008,
@disconnected_connections={},
@backend_connections=[#<BackgrounDRb::Connection:0x22057f4 @server_ip="
127.0.0.1", @connection_status=true, @connection=nil,
@cluster_conn=#<BackgrounDRb::ClusterConnection:0x2205ad8 ...>,
@server_port=11006, @mutex=#<Mutex:0x22057cc>>]>,
@worker_name=:geocode_worker, @tried_connections=[],
@worker_key={:worker_key=>"123"}>

So it would seem that the worker was found, and it has the proper name and
worker_key.  But when I call async_geocode_address on the worker, I see this
in the backgroundrb log:

Invalid worker with name geocode_worker_worker_key123 and key worker_key123
/opt/local/lib/ruby/gems/1.8/gems/packet-0.1.13/lib/packet/packet_connection.rb:52:in
`ask_worker'
/Users/brent/near-time/near-time.net-exp-rescue-princexml-5504/vendor/plugins/backgroundrb/server/lib/master_worker.rb:140:in
`method_invoke'
/Users/brent/near-time/near-time.net-exp-rescue-princexml-5504/vendor/plugins/backgroundrb/server/lib/master_worker.rb:41:in
`receive_data'
/opt/local/lib/ruby/gems/1.8/gems/packet-0.1.13/lib/packet/packet_parser.rb:44:in
`extract'
/opt/local/lib/ruby/gems/1.8/gems/packet-0.1.13/lib/packet/packet_parser.rb:26:in
`loop'
/opt/local/lib/ruby/gems/1.8/gems/packet-0.1.13/lib/packet/packet_parser.rb:26:in
`extract'
/Users/brent/near-time/near-time.net-exp-rescue-princexml-5504/vendor/plugins/backgroundrb/server/lib/master_worker.rb:32:in
`receive_data'
/opt/local/lib/ruby/gems/1.8/gems/packet-0.1.13/lib/packet/packet_core.rb:230:in
`read_external_socket'
/opt/local/lib/ruby/gems/1.8/gems/packet-0.1.13/lib/packet/packet_core.rb:222:in
`handle_external_messages'
/opt/local/lib/ruby/gems/1.8/gems/packet-0.1.13/lib/packet/packet_core.rb:196:in
`handle_read_event'
/opt/local/lib/ruby/gems/1.8/gems/packet-0.1.13/lib/packet/packet_core.rb:192:in
`each'
/opt/local/lib/ruby/gems/1.8/gems/packet-0.1.13/lib/packet/packet_core.rb:192:in
`handle_read_event'
/opt/local/lib/ruby/gems/1.8/gems/packet-0.1.13/lib/packet/packet_core.rb:146:in
`start_reactor'
/opt/local/lib/ruby/gems/1.8/gems/packet-0.1.13/lib/packet/packet_core.rb:139:in
`loop'
/opt/local/lib/ruby/gems/1.8/gems/packet-0.1.13/lib/packet/packet_core.rb:139:in
`start_reactor'
/opt/local/lib/ruby/gems/1.8/gems/packet-0.1.13/lib/packet/packet_master.rb:21:in
`run'
/Users/brent/near-time/near-time.net-exp-rescue-princexml-5504/vendor/plugins/backgroundrb/server/lib/master_proxy.rb:14:in
`initialize'
script/backgroundrb:46:in `new'
script/backgroundrb:46

What's up with that first line?  The worker name and key are both totally
wrong, and I'm not sure why.  Does anybody have any idea what's going on
here?

FYI, I'm on the lates Git code as of a couple of days ago and Packet
v0.1.13.

-Brent



-- 
Brent Collier | www.BrentCollier.com | www.acts-as-blogr.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://rubyforge.org/pipermail/backgroundrb-devel/attachments/20080910/c9930135/attachment.html>


More information about the Backgroundrb-devel mailing list