Patches: Browse | Submit New | Admin

[#5244] RingServer fails to find a TupleSpace when TupleSpace resides in the same ruby process with RingServer

Date:
2006-07-31 00:17
Priority:
3
Submitted By:
Kent Sibilev (kent)
Assigned To:
Akinori MUSHA (knu)
Category:
Network / Comm / Protocols
State:
Open
Summary:
RingServer fails to find a TupleSpace when TupleSpace resides in the same ruby process with RingServer

Detailed description
This example is a demonstration of the problem:

require 'rinda/ring'
require 'rinda/tuplespace'

DRb.start_service

ts = Rinda::TupleSpace.new
server = Rinda::RingServer.new(ts)

provider = Rinda::RingProvider.new :Whatever, Object.new, 'Whatever'
provider.provide

DRb.thread.join


Below is the patch to fix this problem:

Index: lib/rinda/ring.rb
===================================================================
RCS file: /src/ruby/lib/rinda/ring.rb,v
retrieving revision 1.1.2.2
diff -u -r1.1.2.2 ring.rb
--- lib/rinda/ring.rb   24 Oct 2005 15:31:30 -0000      1.1.2.2
+++ lib/rinda/ring.rb   30 Jul 2006 23:58:50 -0000
@@ -80,7 +80,7 @@
     # address of the local TupleSpace.
 
     def do_reply
-      tuple = @ts.take([:lookup_ring, DRbObject])
+      tuple = @ts.take([:lookup_ring, nil])
       Thread.new { tuple[1].call(@ts) rescue nil}
     rescue
     end

Description:

When the RingFinder sends a search request for TupleSpace, RingServer receives it and uses Marshal API to unpack it.
Since both RingServer and RingFinder reside in the same process, DRbObject unmarshals itself to the actual Proc object
in drb/drb.rb:1009.

Note that this used to work correctly in Ruby 1.8.2 because of the bug where Marshal API didn't call DRbObject::_load
method during unmarshalling process.

Add A Comment: Notepad

Please login


Followup

No Followups Have Been Posted

Attached Files:

Name Description Download
No Files Currently Attached

Changes:

Field Old Value Date By
assigned_tonone2007-06-13 06:30zenspider
category_idMisc / Other Standard Library2007-05-30 04:22zenspider
category_idCrypto / Digest / Compression2007-05-30 03:50zenspider
artifact_group_idNone2007-05-30 03:41zenspider