Issue #5618 has been updated by Felix Bnemann.


This issue still exists in Ruby 2.1.5.

----------------------------------------
Bug #5618: Exceptions cause DRb connection to be closed
https://bugs.ruby-lang.org/issues/5618#change-51325

* Author: Lars Christensen
* Status: Assigned
* Priority: Normal
* Assignee: Masatoshi Seki
* ruby -v: ruby 1.9.3p0 (2011-10-30) [i386-mingw32]
* Backport: 
----------------------------------------
If an exception is thrown in a DRb server of a class that is not defined inthe 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>'

---Files--------------------------------
drbserver.rb (194 Bytes)
drbclient.rb (75 Bytes)


-- 
https://bugs.ruby-lang.org/