jingwang opened a new issue, #3963:
URL: https://github.com/apache/camel-quarkus/issues/3963

   We recently upgraded to camel-quarkus `2.11.0` that is on quarkus 
`2.11.1.Final`. We have noticed that the routes defined in the subclass of 
`EndpointRouteBuilder` fail to start with `mvn clean quarkus:dev`. After some 
debugging it seems to be caused by including more than a few methods in the 
subclass. We have managed to reproduce the error with a bare minimum class:
   ```
   import org.apache.camel.builder.endpoint.EndpointRouteBuilder;
   import javax.enterprise.context.ApplicationScoped;
   
   @ApplicationScoped
   public class TestRoute extends EndpointRouteBuilder {
   
       protected int dummy() {
           int a = 0;
           a++;
           a++;
           a++;
           a++;
           a++;
           a++;
           a++;
           a++;
           return a;
       }
       protected int dummy1() {
           int a = 0;
           a++;
           a++;
           a++;
           a++;
           a++;
           a++;
           a++;
           a++;
           return a;
       }
   
       protected int dummy2() {
           int a = 0;
           a++;
           a++;
           a++;
           a++;
           a++;
           a++;
           a++;
           a++;
           return a;
       }
   
       protected int dummy4() {
           int a = 0;
           a++;
           a++;
           a++;
           a++;
           a++;
           a++;
           a++;
           a++;
           return a;
       }
   
       protected int dummy5() {
           int a = 0;
           a++;
           a++;
           a++;
           a++;
           a++;
           a++;
           a++;
           a++;
           return a;
       }
   
       protected int dummy6() {
           int a = 0;
           a++;
           a++;
           a++;
           a++;
           a++;
           a++;
           a++;
           a++;
           return a;
       }
   
       protected int dummy3() {
           int a = 0;
           a++;
           a++;
           a++;
           a++;
           a++;
           a++;
           return a;
       }
   
       @Override
       public void configure()  throws Exception {
   
       }
   }
   ```
   When trying to start up with `mvn clean quarkus:dev`, gives the following 
errors:
   
   ```
   Failed to start quarkus: java.lang.RuntimeException: 
io.quarkus.builder.BuildException: Build failure: Build failed due to errors
        [error]: Build step 
io.quarkus.arc.deployment.ArcProcessor#generateResources threw an exception: 
org.objectweb.asm.MethodTooLargeException: Method too large: 
TestRoute_Subclass.<init> 
(Ljavax/enterprise/context/spi/CreationalContext;Lio/quarkus/arc/InjectableInterceptor;)V
        at 
org.objectweb.asm.MethodWriter.computeMethodInfoSize(MethodWriter.java:2088)
        at org.objectweb.asm.ClassWriter.toByteArray(ClassWriter.java:511)
        at io.quarkus.gizmo.ClassCreator.writeTo(ClassCreator.java:214)
        at io.quarkus.gizmo.ClassCreator.close(ClassCreator.java:225)
        at 
io.quarkus.arc.processor.SubclassGenerator.generate(SubclassGenerator.java:124)
        at 
io.quarkus.arc.processor.BeanProcessor.generateResources(BeanProcessor.java:212)
        at 
io.quarkus.arc.deployment.ArcProcessor.generateResources(ArcProcessor.java:537)
        at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at 
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at 
io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:977)
        at io.quarkus.builder.BuildContext.run(BuildContext.java:281)
        at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
        at 
org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2449)
        at 
org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1478)
        at java.base/java.lang.Thread.run(Thread.java:829)
        at org.jboss.threads.JBossThread.run(JBossThread.java:501)
   
        at 
io.quarkus.runner.bootstrap.AugmentActionImpl.runAugment(AugmentActionImpl.java:330)
        at 
io.quarkus.runner.bootstrap.AugmentActionImpl.createInitialRuntimeApplication(AugmentActionImpl.java:252)
        at 
io.quarkus.runner.bootstrap.AugmentActionImpl.createInitialRuntimeApplication(AugmentActionImpl.java:60)
        at 
io.quarkus.deployment.dev.IsolatedDevModeMain.firstStart(IsolatedDevModeMain.java:95)
        at 
io.quarkus.deployment.dev.IsolatedDevModeMain.accept(IsolatedDevModeMain.java:485)
        at 
io.quarkus.deployment.dev.IsolatedDevModeMain.accept(IsolatedDevModeMain.java:68)
        at 
io.quarkus.bootstrap.app.CuratedApplication.runInCl(CuratedApplication.java:148)
        at 
io.quarkus.bootstrap.app.CuratedApplication.runInAugmentClassLoader(CuratedApplication.java:103)
        at io.quarkus.deployment.dev.DevModeMain.start(DevModeMain.java:131)
        at io.quarkus.deployment.dev.DevModeMain.main(DevModeMain.java:62)
   Caused by: io.quarkus.builder.BuildException: Build failure: Build failed 
due to errors
        [error]: Build step 
io.quarkus.arc.deployment.ArcProcessor#generateResources threw an exception: 
org.objectweb.asm.MethodTooLargeException: Method too large: 
TestRoute_Subclass.<init> 
(Ljavax/enterprise/context/spi/CreationalContext;Lio/quarkus/arc/InjectableInterceptor;)V
        at 
org.objectweb.asm.MethodWriter.computeMethodInfoSize(MethodWriter.java:2088)
        at org.objectweb.asm.ClassWriter.toByteArray(ClassWriter.java:511)
        at io.quarkus.gizmo.ClassCreator.writeTo(ClassCreator.java:214)
        at io.quarkus.gizmo.ClassCreator.close(ClassCreator.java:225)
        at 
io.quarkus.arc.processor.SubclassGenerator.generate(SubclassGenerator.java:124)
        at 
io.quarkus.arc.processor.BeanProcessor.generateResources(BeanProcessor.java:212)
        at 
io.quarkus.arc.deployment.ArcProcessor.generateResources(ArcProcessor.java:537)
        at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at 
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at 
io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:977)
        at io.quarkus.builder.BuildContext.run(BuildContext.java:281)
        at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
        at 
org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2449)
        at 
org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1478)
        at java.base/java.lang.Thread.run(Thread.java:829)
        at org.jboss.threads.JBossThread.run(JBossThread.java:501)
   
        at io.quarkus.builder.Execution.run(Execution.java:123)
        at 
io.quarkus.builder.BuildExecutionBuilder.execute(BuildExecutionBuilder.java:79)
        at io.quarkus.deployment.QuarkusAugmentor.run(QuarkusAugmentor.java:158)
        at 
io.quarkus.runner.bootstrap.AugmentActionImpl.runAugment(AugmentActionImpl.java:328)
        ... 9 more
   Caused by: org.objectweb.asm.MethodTooLargeException: Method too large: 
TestRoute_Subclass.<init> 
(Ljavax/enterprise/context/spi/CreationalContext;Lio/quarkus/arc/InjectableInterceptor;)V
        at 
org.objectweb.asm.MethodWriter.computeMethodInfoSize(MethodWriter.java:2088)
        at org.objectweb.asm.ClassWriter.toByteArray(ClassWriter.java:511)
        at io.quarkus.gizmo.ClassCreator.writeTo(ClassCreator.java:214)
        at io.quarkus.gizmo.ClassCreator.close(ClassCreator.java:225)
        at 
io.quarkus.arc.processor.SubclassGenerator.generate(SubclassGenerator.java:124)
        at 
io.quarkus.arc.processor.BeanProcessor.generateResources(BeanProcessor.java:212)
        at 
io.quarkus.arc.deployment.ArcProcessor.generateResources(ArcProcessor.java:537)
        at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at 
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at 
io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:977)
        at io.quarkus.builder.BuildContext.run(BuildContext.java:281)
        at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
        at 
org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2449)
        at 
org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1478)
        at java.base/java.lang.Thread.run(Thread.java:829)
        at org.jboss.threads.JBossThread.run(JBossThread.java:501)
   ```
   
   pom.xml
   ```
      ...
       <properties>
           <camel-quarkus.version>2.11.0</camel-quarkus.version>
           <quarkus-plugin.version>2.11.1.Final</quarkus-plugin.version>
           <quarkus.platform.version>2.11.1.Final</quarkus.platform.version>
       </properties>
       ...
   ```
   
   If the size/number of methods is reduced (e.g., commenting out some methods 
in the example), the application starts up fine.
   
   Note that this works fine if it is a subclass of `RouteBuilder`.
   
   Previously, the same code worked without errors on quarkus 2.10.0.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to