Evan Weaver wrote:
All right, here goes:

1. I can't reproduce this. Is the problem that closing the acceptor
thread doesn't block on JRuby? Or is it that the thread dies, but the
system still takes a few moments to release the socket?

There are multiple layers of threads here. First off, the acceptor thread must be killed from outside. That's accomplished asynchronously in the HttpServer#stop call, as follows:

    def stop
      stopper = Thread.new do
        exc = StopServer.new
        @acceptor.raise(exc)
      end
      stopper.priority = 10
    end

There's no guarantee when this thread will run, even with a high priority. Since execution continues in the calling thread (the one running test_configurator) the calling thread's attempt to make a connection could succeed (if the raise call hasn't been reached yet), be connecting and then fail unexpectedly (if the acceptor is in the midst of raising), or fail outright (if the raise has completed successfully and the thread has terminated).

At any rate, the call to stop is certainly not guaranteed to kill the target server before it returns.

This one will vary from machine to machine depending on speed, number of cores, and OS-level threading characteristics, but I'm positive the test is not thread-safe.

2. FileUtils#mkdir_p causes test suites to not register if the mkdir_p
argument already exists. Easily worked around but seems like a bug.
Here's a minimal example:

require 'test/unit'
require 'fileutils'
FileUtils.mkdir_p "some_dir"

class TrueTest < Test::Unit::TestCase
  def test_true; assert true; end
end

It works as long as "some_dir" doesn't already exist, mkdir_p is not
called, or mkdir_p is called from within a TrueTest instance method
rather than at load time.

That's really weird, but it matches my observation. Can you file this as a bug in JIRA along with this simple test case?

http://jira.codehaus.org/browse/JRUBY

3. You have my JDK versions already... any more tips on how to debug
this? I'm using a 32bit system, for what it's worth.

puts?

Debugging this stuff is still a little difficult. Hopefully jruby-debug will come along soon.

4. HttpServer is in the Mongrel module, so somehow it's not finding
that reference appropriately. I haven't looked at this in detail yet.

This also could be a bug. If you look into it and can confirm it, file it in JIRA.

- Charlie

---------------------------------------------------------------------
To unsubscribe from this list please visit:

   http://xircles.codehaus.org/manage_email

Reply via email to