Bug #5618
closedExceptions cause DRb connection to be closed
Description
If an exception is thrown in a DRb server of a class that is not defined in the client process, the DRb connection is closed abrubtly. In Ruby 1.8, the exception was translated to an instance generic exception class (DRb::DRbRemoteError).
Steps to reproduce:
- Start DRb client+server
- Throw exception of custom class in server (class not defined in client script).
Observed behaviour:
- Client raises DRb::DRbConnError because connection is closed - used to be generic error.
Expected behaviour:
- Client raises DRb::DRbRemoteError, and preserves full stack trace from server.
Attached is server/client script showing the problem.
Here is the stack trace of the client:
C:/lang/Ruby193/lib/ruby/1.9.1/drb/drb.rb:570:in load': connection closed (DRb::DRbConnError) from C:/lang/Ruby193/lib/ruby/1.9.1/drb/drb.rb:632:in
recv_reply'
from C:/lang/Ruby193/lib/ruby/1.9.1/drb/drb.rb:918:in recv_reply' from C:/lang/Ruby193/lib/ruby/1.9.1/drb/drb.rb:1197:in
send_message'
from C:/lang/Ruby193/lib/ruby/1.9.1/drb/drb.rb:1088:in block (2 levels) in method_missing' from C:/lang/Ruby193/lib/ruby/1.9.1/drb/drb.rb:1172:in
open'
from C:/lang/Ruby193/lib/ruby/1.9.1/drb/drb.rb:1087:in block in method_missing' from C:/lang/Ruby193/lib/ruby/1.9.1/drb/drb.rb:1105:in
with_friend'
from C:/lang/Ruby193/lib/ruby/1.9.1/drb/drb.rb:1086:in method_missing' from drbclient.rb:3:in
'
Files