make test TEST="micro:" got java.lang.UnsupportedClassVersionError
Liu, Xin
xxinliu at amazon.com
Thu Oct 29 08:51:33 UTC 2020
Hi, Claes,
Thank you for fixing that.
--lx
On 10/28/20, 4:07 PM, "Claes Redestad" <claes.redestad at oracle.com> wrote:
CAUTION: This email originated from outside of the organization. Do not click links or open attachments unless you can confirm the sender and know the content is safe.
FWIW I just integrated the change to remove --enable-preview from
the micros build, so the UnsupportedClassVersionError should be
gone if you sync up. No --enable-preview needed.
/Claes
On 2020-10-28 11:09, Liu, Xin wrote:
> Hi, Claes,
>
> Thank you for the great guideline of micro benchmarking. now I have a clearer picture for it.
> I'm happy to learn that 5-10 minutes for each Benchmark! Let me polish mine.
>
> Thanks,
> --lx
>
> On 10/27/20, 3:59 AM, "Claes Redestad" <claes.redestad at oracle.com> wrote:
>
> CAUTION: This email originated from outside of the organization. Do not click links or open attachments unless you can confirm the sender and know the content is safe.
>
>
>
> Hi lx,
>
> the need to add --enable-preview is known, and it's a bug introduced a
> couple of months ago thanks to a suggestion I did (without realizing
> that compiling one micro with --enable-preview would poison all of
> them..). This issue is tracked by a few bugs, see
> https://bugs.openjdk.java.net/browse/JDK-8250669 and
> https://bugs.openjdk.java.net/browse/JDK-8253828
>
> The fix will likely be to remove the --enable-preview from the micros
> build after Records goes out of preview and then think more carefully on
> how to add support for benchmarking preview features.
>
> As to your other question: When adding a microbenchmark it's appreciated
> if the default configuration makes it as quick to run as possible
> without sacrificing quality. Often the default number of forks,
> iteration runtime et.c. can be tuned down by using custom settings in
> @Fork et.c. Custom parameters used can be limited to a select handful.
>
> Still it's normal for a "good" microbenchmark to require
> at least five, usually ten minutes per @Benchmark to produce reasonably
> trustworthy results.
>
> I can't speak for what others do, but we (Oracle) select what to run
> regularly from the available microbenchmarks at our discretion, though.
> That means adding a microbenchmark that takes a prohibitively long time
> won't be disruptive to our nightly testing, but for obvious (mostly
> economic) reasons we'd be unlikely to add an extremely long-running
> micro to regular coverage.
>
> /Claes
>
> On 2020-10-27 10:06, Liu, Xin wrote:
> > Hi,
> >
> > I follow the instruction on https://urldefense.com/v3/__https://htmlpreview.github.io/?https:**Agithub.com*openjdk*jdk*blob*master*doc*testing.html*microbenchmarks__;Ly8vLy8vLy8j!!GqivPVa7Brio!ND3mbOTCkCdkICq5NKxlPCWh7dWYhtMdQdg0GabOEKe0FlDTJDkj-lfNyWujH7AmDts$ to run a new microbenchmark.
> > I got error message as follows.
> > java.lang.UnsupportedClassVersionError: Preview features are not enabled for org/openjdk/bench/java/lang/reflect/proxy/jmh_generated/ProxyBench_newProxyInstance1i_jmhTest (class file version 60.65535). Try running with '--enable-preview'
> > at java.base/java.lang.ClassLoader.defineClass1(Native Method)
> > at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1010)
> > at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)
> > at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:855)
> > at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:753)
> > at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:676)
> > at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:634)
> > at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:182)
> > at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:519)
> > at java.base/java.lang.Class.forName0(Native Method)
> > at java.base/java.lang.Class.forName(Class.java:377)
> > at org.openjdk.jmh.util.ClassUtils.loadClass(ClassUtils.java:72)
> > at org.openjdk.jmh.runner.BenchmarkHandler.<init>(BenchmarkHandler.java:68)
> > at org.openjdk.jmh.runner.BaseRunner.runBenchmark(BaseRunner.java:232)
> > at org.openjdk.jmh.runner.BaseRunner.doSingle(BaseRunner.java:138)
> > at org.openjdk.jmh.runner.BaseRunner.runBenchmarksForked(BaseRunner.java:75)
> > at org.openjdk.jmh.runner.ForkedRunner.run(ForkedRunner.java:72)
> > at org.openjdk.jmh.runner.ForkedMain.main(ForkedMain.java:84)
> >
> >
> > If I add an extra flag “—enable-preview” , the micro bench will work.
> > make test TEST="micro:java.lang.reflect" MICRO="VM_OPTIONS=--enable-preview"
> >
> > I am using jmh from make/devkit/createJMHBundle.sh, which gives me jmh-core-1.26.jar
> > Is that jmh-core too old or we should adjust RunTest.gmk a little bit to have that flag?
> >
> > Does Openjdk CI run benchmarks to detect performance regression? If so, could you point me to a guideline of microbenmark?
> > I lack of the basic sense of a “good” microbenchmark. My concern is the new micro I added is too long to break the established test run.
> >
> > Thanks,
> > --lx
> >
> >
>
More information about the build-dev
mailing list