RFR: 7187882: TEST_BUG: java/rmi/activation/checkusage/CheckUsage.java fails intermittently
Mandy Chung
mandy.chung at oracle.com
Mon Jan 7 23:39:56 UTC 2013
On 1/7/2013 3:01 PM, Stuart Marks wrote:
> (Note for other readers: StreamPipe is not part of this webrev; the
> source is viewable at [1].)
>
> Hi Mandy,
>
> I don't see any place where the StreamPipe threads are interrupted, so
> the silent exit on InterruptedIOException probably doesn't ever get
> exercised. This handling does seem a bit odd to me though.
>
> For both IOException and InterruptedIOE the thread exits immediately
> (and for IOE a stack trace is printed) but this is never reported to
> the caller, so if one of these did occur, it's likely that no one
> would ever notice -- unless it caused the calling test to fail. It
> would probably be reasonable for a StreamPipe to store an indication
> of whether it encountered and exception and have code in
> JavaVM.waitFor query it and report it to the caller. This seems like a
> pretty rare case though. Maybe something to do in a future cleanup.
Swallowing an exception with no good reason seems a potential cause of
reliability issue. As you think this seems a pretty rare case, I'm
fine if you prefer to do this in a future cleanup. Just wanted to point
this out.
>
> Turns out this bug was pretty easy to reproduce by putting a sleep()
> at the right place in the StreamPipe loop. This causes the StreamPipe
> always to "lose" the race condition so in the old code the test would
> fail every time. With the new join() logic the test always passes,
> even with sleep() in place; it just runs more slowly.
That's good. Thanks.
Mandy
>
> Thanks,
>
> s'marks
>
>
>
>
> [1]
> http://hg.openjdk.java.net/jdk8/tl/jdk/file/a996b57e5541/test/java/rmi/testlibrary/StreamPipe.java
>
>
>
> On 1/4/13 4:38 PM, Mandy Chung wrote:
>> It is a good cleanup and the change looks okay to me. I'll count on
>> your
>> testing to verify if this fixes the intermittent problem :)
>>
>> StreamPipe.run() catches InterruptedIOException and IOException and
>> ignores the
>> error. Is it safe? Are the tests expected to fail in some other way
>> (missing
>> output?). Should it (or waitFor method) throw a RuntimeException
>> instead if
>> any such exception is thrown?
>>
>> Just curious - Is this intermittent test failure easy to reproduce?
>>
>> Thanks
>> Mandy
>>
>> On 1/3/2013 6:39 PM, Stuart Marks wrote:
>>>
>>> Hi all,
>>>
>>> Please review these additional RMI test cleanups:
>>>
>>> http://cr.openjdk.java.net/~smarks/reviews/7187882/webrev.0/
>>>
>>> in service of fixing the following bug:
>>>
>>> http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7187882
>>>
>>> The basic problem here is that tests were waiting for the JVM
>>> subprocess to
>>> exit, but not waiting for all output from the subprocess to be
>>> collected. The
>>> fix includes a bit of new infrastructure in RMI's test library and
>>> adjustment
>>> of several other tests to use it.
>>>
>>> Thanks,
>>>
>>> s'marks
More information about the core-libs-dev
mailing list