RFR (S) 8129355 - [TESTBUG] FragmentMetaspaceSimple.java fails with ClassNotFoundException: test.Empty
Ioi Lam
ioi.lam at oracle.com
Thu Jul 2 20:58:48 UTC 2015
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