Thanks to visit codestin.com
Credit goes to github.com

Skip to content

interface proxy generation is race-y #6160

@kares

Description

@kares
class Runner
  def run; end
end

10.times do |i|
  runner = Runner.new

  3.times.map do
    Thread.start { p runner.to_java(java.lang.Runnable) }
  end.each(&:join)
end

the script will often fail, trying to generate the Runnable proxy impl :

#<Java::OrgJrubyGen::InterfaceImpl1637004621:0x265773ef>
#<Java::OrgJrubyGen::InterfaceImpl1637004621:0x7fe0a0f9>
#<Java::OrgJrubyGen::InterfaceImpl1637004621:0x42a06b46>
#<Java::OrgJrubyGen::InterfaceImpl1637004621:0x59d5eadd>
warning: thread "Ruby-0-Thread-5: logger_race.rb:14" terminated with exception (report_on_exception is true):
#<Java::OrgJrubyGen::InterfaceImpl1637004621:0x59d5eadd>
NoMethodError: undefined method `__jcreate_meta!' for #<Runner:0x7b1a2825>
         to_java at org/jruby/java/addons/KernelJavaAddons.java:29
  race.rb at logger_race.rb:22
NoMethodError: undefined method `__jcreate_meta!' for #<Runner:0x7b1a2825>
         to_java at org/jruby/java/addons/KernelJavaAddons.java:29
  race.rb at logger_race.rb:22

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions