Now you're getting deep into the bowels of my threading code. criticalizeOrDieIfKilled waits on a lock when critical= is set to true somewhere in the system. If the thread is killed, it will die once it wakes up. Both situations are handled here, and the method is called fairly frequently.

If you're getting an interrupted exception in there, it would appear someone is killing the thread. Currently, kill causes the thread to be interrupted if it is waiting, and the interruption is rethrown as a runtime exception. That is wrong, but I wasn't sure what was right when writing this originally, since JRuby was nowhere near supporting critical= back then.

I'll have to give this one a little thought. It may just be a matter of not rethrowing when interrupted in a critical section.

On 4/6/06, Ola Bini <[EMAIL PROTECTED]> wrote:
Hi.

The time has come to rewrite Zlib FAST, so it'll actually be usable. This
should not cause much of a problem and would probably speed things up a
magnitude or something like that.
I happened upon a strange error inside remote_installer.rb where RubyGems
fetches the source-index remotely:

java.lang.RuntimeException: java.lang.InterruptedException
        at org.jruby.RubyThread.criticalizeOrDieIfKilled(RubyThread.java:293)
        at org.jruby.RubyThread.pollThreadEvents(RubyThread.java:278)
        at org.jruby.runtime.ThreadContext.pollThreadEvents(ThreadContext.java:449)
        at org.jruby.evaluator.EvaluationState.executeNext(EvaluationState.java:206)
        at org.jruby.evaluator.EvaluationState.begin (EvaluationState.java:291)
        at
org.jruby.internal.runtime.methods.EvaluateCallable.internalCall(EvaluateCallable.java:67)
        at
org.jruby.internal.runtime.methods.AbstractCallable.call(AbstractCallable.java :64)
        at org.jruby.runtime.ThreadContext.yield(ThreadContext.java:349)
        at org.jruby.runtime.Block.call(Block.java:114)
        at org.jruby.RubyProc.call(RubyProc.java:114)
        at org.jruby.RubyProc.call (RubyProc.java:100)
        at org.jruby.internal.runtime.RubyNativeThread.run(RubyNativeThread.java:75)
Caused by: java.lang.InterruptedException
        at java.lang.Object.wait(Native Method)
        at java.lang.Object.wait (Object.java:429)
        at org.jruby.RubyThread.waitIfCriticalized(RubyThread.java:260)
        at org.jruby.RubyThread.criticalizeOrDieIfKilled(RubyThread.java:290)
        ... 11 more



I get this error at this line:
         open(uri,
              "User-Agent" => "RubyGems/#{Gem::RubyGemsVersion}",
              :proxy => @http_proxy,
              &block)


could someone shed some light on this, while I take care of Zlib?

Regards
  Ola Bini




-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
_______________________________________________
Jruby-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jruby-devel



--
Charles Oliver Nutter @ headius.blogspot.com
JRuby Developer @ jruby.sourceforge.net
Application Architect @ www.ventera.com

Reply via email to