Issue #5618 has been reported by Lars Christensen.

----------------------------------------
Bug #5618: Exceptions cause DRb connection to be closed
http://redmine.ruby-lang.org/issues/5618

Author: Lars Christensen
Status: Open
Priority: Normal
Assignee: 
Category: 
Target version: 
ruby -v: ruby 1.9.3p0 (2011-10-30) [i386-mingw32]


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:

1. Start DRb client+server
2. Throw exception of custom class in server (class not defined in client script).

Observed behaviour:

3. Client raises DRb::DRbConnError because connection is closed - used to be generic error.

Expected behaviour:

3. 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 `<main>'


-- 
http://redmine.ruby-lang.org