I am trying to write a simple remote execution framework, and am running into a
DRb problem I can’t seem to figure out. The system consists of a controller and
a number of clients; the controller sends commands to the clients (these
commands in turn will eventually talk to a server). The problem is that when I
make the same method call twice in a row I see the following error on the
controller side:
Terminal A: running the client:
lizzy:~/public_html/ruby/webrun% ./webrun-client.rb
Starting WebRun service on localhost:12345
WebRunClient.add(u1)
users=[u1]
cmd=load_file
Terminal B: running the controller:
lizzy:~/public_html/ruby/webrun% ./webrun-control.rb
assigning proxy for localhost
#<UserPool:0x8174ba8 @userlist={“u1”=>#<User:0x8174b30 @client_class=“Client_u1”, @name=“u1”, @filename=nil, @thread=nil>}>
#<UserPool:0x8174234 @userlist={“u1”=>#<User:0x81741bc @client_class=“Client_u1”, @name=“u1”, @filename=nil, @thread=nil>}>
user u1 -> client localhost:12345
execute cmd load_file on client localhost:12345 for users [u1]
2nd call fails:
#<DRb::DRbUnknown:0x8172d44 @buf="\004\010o:\rUserPool\006:\016@userlist{\006"\au1o:\tUser\n:\022@client_class"\016Client_u1:\v@klassc\024User::Client_u1:\016@filename"\fproc.rb:\f@thread0:\n@name"\au1", @name=“User::Client_u1”>
#<DRb::DRbUnknown:0x8172060 @buf="\004\010o:\rUserPool\006:\016@userlist{\006"\au1o:\tUser\n:\022@client_class"\016Client_u1:\v@klassc\024User::Client_u1:\016@filename"\fproc.rb:\f@thread0:\n@name"\au1", @name=“User::Client_u1”>
./webrun.rb:29:in has_user?': undefined method
has_user?’ for #DRb::DRbUnknown:0x81719d0 (NoMethodError)
from ./webrun.rb:82:in where_is_user' from ./webrun.rb:80:in
each’
from ./webrun.rb:75:in each' from ./webrun.rb:75:in
each’
from ./webrun.rb:87:in where_is_user' from ./webrun.rb:138:in
execute_each_user’
from ./webrun.rb:137:in each' from ./webrun.rb:137:in
execute_each_user’
from ./webrun-control.rb:17
The code is at:
http://lizzy.dyndns.org/~jos/ruby/webrun/webrun.rb
http://lizzy.dyndns.org/~jos/ruby/webrun/webrun-client.rb
http://lizzy.dyndns.org/~jos/ruby/webrun/webrun-control.rb
http://lizzy.dyndns.org/~jos/ruby/webrun/proc.rb
Does anybody have any idea what I could be doing wrong or how to debug this
problem?
Thanks,
···
–
Jos Backus / /// Sunnyvale, CA
_/ _/ _/
/ ///
_/ _/ _/ /
jos at catnook.com // /// require ‘std/disclaimer’