[
https://issues.apache.org/jira/browse/ARIES-2080?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17634129#comment-17634129
]
Jan Bartel edited comment on ARIES-2080 at 11/15/22 3:31 AM:
-------------------------------------------------------------
It not only fails for records, it also fails for any {{{}enums{}}}, which more
recent versions of the jvm are generating as `{{{}final{}}}` and therefore
`{{{}sealed{}}}`.
We're using spifly 1.3.5 with asm 9.3, but the stacktrace we see for parsing an
enum generated with jdk17 is as follows:
{quote}java.lang.UnsupportedOperationException: PermittedSubclasses requires
ASM9
at
org.objectweb.asm.ClassVisitor.visitPermittedSubclass(ClassVisitor.java:265)
at org.objectweb.asm.ClassReader.accept(ClassReader.java:706)
at org.objectweb.asm.ClassReader.accept(ClassReader.java:424)
at
org.apache.aries.spifly.dynamic.ClientWeavingHook.weave(ClientWeavingHook.java:60)
at
org.eclipse.osgi.internal.weaving.WovenClassImpl.call(WovenClassImpl.java:187)
at
org.eclipse.osgi.internal.weaving.WovenClassImpl.call(WovenClassImpl.java:1)
at
org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.notifyHookPrivileged(ServiceRegistry.java:1357)
at
org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.notifyHooksPrivileged(ServiceRegistry.java:1330)
at
org.eclipse.osgi.internal.weaving.WovenClassImpl.callHooks(WovenClassImpl.java:249)
at
org.eclipse.osgi.internal.weaving.WeavingHookConfigurator.processClass(WeavingHookConfigurator.java:80)
at
org.eclipse.osgi.internal.loader.classpath.ClasspathManager.processClass(ClasspathManager.java:735)
at
org.eclipse.osgi.internal.loader.classpath.ClasspathManager.defineClass(ClasspathManager.java:706)
at
org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findClassImpl(ClasspathManager.java:639)
at
org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClassImpl(ClasspathManager.java:607)
at
org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClassImpl(ClasspathManager.java:587)
at
org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:566)
at
org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:335)
at
org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:397)
at
org.eclipse.osgi.internal.loader.BundleLoader.findClass0(BundleLoader.java:500)
at
org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:416)
at
org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:168)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
at org.eclipse.jetty.http.MimeTypes.lambda$static$0(MimeTypes.java:211)
at org.eclipse.jetty.util.Index$Builder.withAll(Index.java:357)
at org.eclipse.jetty.http.MimeTypes.<clinit>(MimeTypes.java:207)
at
org.eclipse.jetty.ee9.nested.ContextHandler.doStart(ContextHandler.java:629)
{quote}
was (Author: janbartel):
It not only fails for records, it also fails for any {{{}enums{}}}, which more
recent versions of the jvm are generating as `{{{}final{}}}` and therefore
`{{{}sealed{}}}`.
> TCCLSetterVisitor fails visitation of classes containing records
> ----------------------------------------------------------------
>
> Key: ARIES-2080
> URL: https://issues.apache.org/jira/browse/ARIES-2080
> Project: Aries
> Issue Type: Bug
> Components: SPI Fly
> Affects Versions: spifly-1.3.5
> Reporter: Bjørn C Seime
> Priority: Major
> Attachments: stacktrace-aries-spifly-asm8.txt
>
>
> {{TCCLSetterVisitor}} class overrides {{ClassVisitor}} passing API version
> {{Opcodes.ASM7}} as argument to its super class's constructor. The effect is
> that {{TCCLSetterVisitor}} fails whenever it visits byte code requiring ASM
> API version >7 - even on ASM 9.3. This results in the weaving hook failing
> during class loading for classes using records from JDK16.
> {noformat}
> [2022-07-07 13:22:05.080] WARNING : container stderr Caused by:
> java.lang.UnsupportedOperationException: Records requires ASM8
> [2022-07-07 13:22:05.080] WARNING : container stderr at
> com.yahoo.vespa.spifly.repackaged.asm.ClassVisitor.visit(ClassVisitor.java:111)
> {noformat}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)