RFR (S) 8129355 - [TESTBUG] FragmentMetaspaceSimple.java fails with ClassNotFoundException: test.Empty

Coleen Phillimore coleen.phillimore at oracle.com
Fri Jul 3 00:22:36 UTC 2015


This looks like a good fix to me also.
Coleen

Sent from my iPhone

> On Jul 2, 2015, at 5:36 PM, Mikhailo Seledtsov <mikhailo.seledtsov at oracle.com> wrote:
> 
> Hi Ioi,
> 
> Changes look good to me.
> This is a great optimization idea for this testcase, to load class from buffer instead of a file.
> 
> And thank you for thorough testing of the fix.
> 
> Misha
> 
>> On 7/2/2015 1:58 PM, Ioi Lam wrote:
>> Please review a small fix:
>> 
>> http://cr.openjdk.java.net/~iklam/8129355-frag-metaspace-testbug-v1/
>> 
>> Bug: [TESTBUG] runtime FragmentMetaspaceSimple.java fails with java.lang.ClassNotFoundException: test.Empty
>> 
>>    https://bugs.openjdk.java.net/browse/JDK-8129355
>> 
>> Cause of failure:
>> 
>> The test case is intended to stress the HotSpot metaspace allocation code, for 80 seconds,
>>    by repeatedly loading many instances of a simple class named "test.Empty".
>> 
>>    In the failing version, each class is loaded by a new URLClassLoader instance. So each time
>>    when a class is loaded, the file system is accessed to read the bytes of the class. So
>>    inadvertently, this test has also become a stress test for the file system.
>> 
>>    On some of our embedded test machines, the file system may be misbehaving and would fail
>>    to read the Empty.class file on rare occasions. This causes the test failure reported
>>    by 8129355.
>> 
>> Summary of fix:
>> 
>>    My fix is to not to use URLClassLoader. Instead, read Empty.class only once, and store the
>>    contents into a byte buffer. This buffer will be used to define every instance of the Empty
>>    class.
>> 
>>    While this fix does not address the root cause of the failure (file system issue in some
>>    test machines), it will reduce the noise in our nightly tests.
>> 
>>    Also, now that the file system is accessed much less frequently, we can run many more iterations
>>    so we can stress the metaspace more, which is the real intent of this test.
>> 
>>    Now it runs for about 80 million iterations on a fast PC and 5 million iterations on an
>>    embedded box.
>> 
>> Tests:
>> 
>>    Since the new version causes more stress in metaspace, I wanted to make sure it doesn't cause
>>    any new failures related to metaspace. So I used the "RBT" tool to run the test 50 times
>>    on 8 platforms:
>> 
>>        linux-arm64, linux-i586, linux-x64, macosx-x64,
>>        solaris-sparcv9, solaris-x64, windows-i586, windows-x64
>> 
>>    for both product and fast debug builds. I also ran the test on 32-bit ARM for 12 hours (700+ runs)
>>    and saw no failure.
>> 
>> Thanks
>> - Ioi
> 


More information about the hotspot-runtime-dev mailing list