JRuby

DRb hangs when transferring Ruby objects created in Java

Details

  • Type: Bug Bug
  • Status: Closed Closed
  • Priority: Minor Minor
  • Resolution: Fixed
  • Affects Version/s: JRuby 1.0.0
  • Fix Version/s: JRuby 1.2
  • Component/s: Core Classes/Modules
  • Labels:
    None
  • Environment:
    Mac OS X Tiger
  • Number of attachments :
    0

Description

If I use a Java class to create Ruby objects, they cannot be sent over DRb. i.e:

package com.kylemaxwell.development;
import org.jruby.*;
import java.util.*;
public class Fu
{
  public static RubyHash rubyHashPlease()
  {
    Ruby jruby = Ruby.getDefaultInstance();
    HashMap map = new HashMap();
    map.put(
       RubyString.newUnicodeString(jruby,  "foo"), 
      RubyString.newUnicodeString(jruby,  "bar")
    );
    return new RubyHash(jruby, map, new RubyNil(jruby));
  }
}
# jirb
 > require "java"
=> true
 > Fu = com.kylemaxwell.development.Fu
=> Java::ComKylemaxwellDevelopment::Fu
 > Fu.ruby_hash_please
=> {"foo"=>"bar"}
 > Fu.ruby_hash_please
=> {"foo"=>"bar"}
 > Marshal::dump _
=> "\004\010{\006\"\010foo\"\010bar"
 > Marshal::load _
=> {"foo"=>"bar"}
 > require 'drb'
=> true
 > DRb.start_service nil, Fu
=> #<DRb::DRbServer:0x9...
 > DRb.uri
=> "druby://kyle.wan:59476"

# other window...
 > require 'drb'
=> true
 > DRb.start_service
=> #<DRb::DRbServer:0x679f...
>> Fu = DRbObject.new nil, "druby://kyle.wan:59476"
=> #<DRb::DRbObject:0x65bd14 @ref=nil, @uri="druby://kyle.wan:59476">
 > Fu.ruby_hash_please
# Hangs....

Activity

Hide
Charles Oliver Nutter added a comment -

This is because our JavaObject wrapper does not delegate marshalling to Java serialization. We should probably fix this for 1.1, so that Java objects can be marshaled.

Show
Charles Oliver Nutter added a comment - This is because our JavaObject wrapper does not delegate marshalling to Java serialization. We should probably fix this for 1.1, so that Java objects can be marshaled.
Hide
Charles Oliver Nutter added a comment -

Punting issues from 1.1 RC2 to 1.1 final.

Show
Charles Oliver Nutter added a comment - Punting issues from 1.1 RC2 to 1.1 final.
Hide
Charles Oliver Nutter added a comment -

Java integration related, and a bit involved too. Post 1.1.

Show
Charles Oliver Nutter added a comment - Java integration related, and a bit involved too. Post 1.1.
Hide
Riley Lynch added a comment -

See also JRUBY-2128 for another Java object marshalling issue.

Show
Riley Lynch added a comment - See also JRUBY-2128 for another Java object marshalling issue.
Hide
Charles Oliver Nutter added a comment -

This works now in JRuby 1.2, since I implemented marshalling for wrapped Java objects using Java serialization.

=> #<DRb::DRbObject:0x4662a3a1 @uri="druby://192.168.0.105:60863", @ref=nil>
irb(main):004:0> Fu.ruby_hash_please
=> {"foo"=>"bar"}
Show
Charles Oliver Nutter added a comment - This works now in JRuby 1.2, since I implemented marshalling for wrapped Java objects using Java serialization.
=> #<DRb::DRbObject:0x4662a3a1 @uri="druby://192.168.0.105:60863", @ref=nil>
irb(main):004:0> Fu.ruby_hash_please
=> {"foo"=>"bar"}

People

Vote (0)
Watch (2)

Dates

  • Created:
    Updated:
    Resolved: