J
Jos Backus
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:
RbUnknown: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:
RbUnknown: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:
RbUnknown: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'
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:
#<DRb:
/webrun.rb:29:in `has_user?': undefined method `has_user?' for #<DRb:
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'