Project

General

Profile

Actions

Bug #13127

closed

DRb `load': connection closed (DRb::DRbConnError) when client exit's from within a loop iterating over remote objects

Added by mkanoor@redhat.com (Madhu Kanoor) about 7 years ago. Updated about 7 years ago.

Status:
Closed
Target version:
-
ruby -v:
ruby 2.4.0p0 (2016-12-24 revision 57164) [x86_64-darwin16]
[ruby-core:79072]

Description

Calling exit from a DRb client inside a do block while iterating over remote objects causes a DRb connection closed error.
This error doesn't happen when working with local objects.

To recreate the problem
start the drb server using ruby drb_server_test.rb
run the client ruby drb_client_test.rb

The client code fails with a stack trace


Files

drb_server_test.rb (282 Bytes) drb_server_test.rb DRb server code mkanoor@redhat.com (Madhu Kanoor), 01/13/2017 06:01 PM
drb_client_test.rb (206 Bytes) drb_client_test.rb DRb client code mkanoor@redhat.com (Madhu Kanoor), 01/13/2017 06:01 PM
output.txt (2.11 KB) output.txt Stack trace mkanoor@redhat.com (Madhu Kanoor), 01/13/2017 06:47 PM

Updated by mkanoor@redhat.com (Madhu Kanoor) about 7 years ago

  • Subject changed from DRb `load': connection closed (DRb::DRbConnError) when client exists from within a loop iterating over remote objects to DRb `load': connection closed (DRb::DRbConnError) when client exit's from within a loop iterating over remote objects

Updated by shyouhei (Shyouhei Urabe) about 7 years ago

  • Status changed from Open to Assigned
  • Assignee set to seki (Masatoshi Seki)

Updated by seki (Masatoshi Seki) about 7 years ago

  • Status changed from Assigned to Closed

what's happen?

 # S: drb_server_test.rb
 # C: drb_client_test.rb

 # (1) C send :each_with_index, &block to my_array in S.
remote_object.each_with_index
 # (2) S send :yield to &block in C.
                              do |obj, index| 
  puts "#{obj.name}"
  if index > 5
    exit (1) 
    # exit() then failed (2), and generate backtrace.
  end
end

Can you use Kernel.exit! instead of exit ?

Updated by mkanoor@redhat.com (Madhu Kanoor) about 7 years ago

The Kernel.exit! works.
But why does the problem happen with the exit called? Isn't that a bug.

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0