Actions
Bug #13127
closedDRb `load': connection closed (DRb::DRbConnError) when client exit's from within a loop iterating over remote objects
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
Updated by mkanoor@redhat.com (Madhu Kanoor) almost 8 years ago
- File output.txt output.txt added
Updated by mkanoor@redhat.com (Madhu Kanoor) almost 8 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) almost 8 years ago
- Status changed from Open to Assigned
- Assignee set to seki (Masatoshi Seki)
Updated by seki (Masatoshi Seki) almost 8 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) almost 8 years ago
The Kernel.exit! works.
But why does the problem happen with the exit called? Isn't that a bug.
Actions
Like0
Like0Like0Like0Like0Like0