Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

NPE when testing serviceCall EIP #2952

Closed
ppalaga opened this issue Jul 27, 2021 · 2 comments · Fixed by #2953
Closed

NPE when testing serviceCall EIP #2952

ppalaga opened this issue Jul 27, 2021 · 2 comments · Fixed by #2953
Assignees
Milestone

Comments

@ppalaga
Copy link
Contributor

ppalaga commented Jul 27, 2021

Steps to reproduce:

cd camel-quarkus
git remote add ppalaga git@github.com:ppalaga/camel-quarkus.git
git fetch ppalaga
git checkout 210727-serviceCall ppalaga/210727-serviceCall

mvnd clean install -Dquickly
cd integration-tests/http

mvn test -Dtest=HttpTest#serviceCall

Expected: the test passes

Actual: the application does not start:

2021-07-27 15:39:46,762 ERROR [org.apa.cam.qua.mai.CamelMainRuntime] (main) Failed to start application: org.apache.camel.FailedToCreateRouteException: Failed to create route route6 at: >>> ServiceCall[myService] <<< in route: Route(route6)[From[netty-http:http://0.0.0.0:{{camel.netty-h... because of java.lang.NullPointerException
        at org.apache.camel.reifier.RouteReifier.doCreateRoute(RouteReifier.java:240)
        at org.apache.camel.reifier.RouteReifier.createRoute(RouteReifier.java:74)
        at org.apache.camel.impl.DefaultModelReifierFactory.createRoute(DefaultModelReifierFactory.java:49)
        at org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:826)
        at org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:716)
        at org.apache.camel.impl.engine.AbstractCamelContext.doInit(AbstractCamelContext.java:2756)
        at org.apache.camel.quarkus.core.FastCamelContext.doInit(FastCamelContext.java:158)
        at org.apache.camel.support.service.BaseService.init(BaseService.java:83)
        at org.apache.camel.impl.engine.AbstractCamelContext.init(AbstractCamelContext.java:2475)
        at org.apache.camel.support.service.BaseService.start(BaseService.java:111)
        at org.apache.camel.impl.engine.AbstractCamelContext.start(AbstractCamelContext.java:2494)
        at org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:245)
        at org.apache.camel.quarkus.main.CamelMain.doStart(CamelMain.java:94)
        at org.apache.camel.support.service.BaseService.start(BaseService.java:119)
        at org.apache.camel.quarkus.main.CamelMain.startEngine(CamelMain.java:139)
        at org.apache.camel.quarkus.main.CamelMainRuntime.start(CamelMainRuntime.java:49)
        at org.apache.camel.quarkus.core.CamelBootstrapRecorder.start(CamelBootstrapRecorder.java:45)
        at io.quarkus.deployment.steps.CamelBootstrapProcessor$boot-173480958.deploy_0(CamelBootstrapProcessor$boot-173480958.zig:101)
        at io.quarkus.deployment.steps.CamelBootstrapProcessor$boot-173480958.deploy(CamelBootstrapProcessor$boot-173480958.zig:40)
        at io.quarkus.runner.ApplicationImpl.doStart(ApplicationImpl.zig:865)
        at io.quarkus.runtime.Application.start(Application.java:101)
        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.runner.bootstrap.StartupActionImpl.run(StartupActionImpl.java:181)
        at io.quarkus.test.junit.QuarkusTestExtension.doJavaStart(QuarkusTestExtension.java:357)
        at io.quarkus.test.junit.QuarkusTestExtension.ensureStarted(QuarkusTestExtension.java:654)
        at io.quarkus.test.junit.QuarkusTestExtension.beforeAll(QuarkusTestExtension.java:701)
        at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$invokeBeforeAllCallbacks$8(ClassBasedTestDescriptor.java:368)
        at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
        at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.invokeBeforeAllCallbacks(ClassBasedTestDescriptor.java:368)
        at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.before(ClassBasedTestDescriptor.java:192)
        at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.before(ClassBasedTestDescriptor.java:78)
        at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:136)
        at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
        at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
        at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
        at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
        at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
        at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
        at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
        at java.base/java.util.ArrayList.forEach(ArrayList.java:1541)
        at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
        at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143)
        at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
        at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
        at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
        at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
        at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
        at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
        at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
        at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
        at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
        at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
        at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:108)
        at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
        at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
        at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
        at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
        at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:96)
        at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:75)
        at org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invokeAllTests(JUnitPlatformProvider.java:150)
        at org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invoke(JUnitPlatformProvider.java:124)
        at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:384)
        at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:345)
        at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:126)
        at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:418)
Caused by: java.lang.IllegalArgumentException: java.lang.NullPointerException
        at org.apache.camel.model.cloud.ServiceCallServiceDiscoveryConfiguration.newInstance(ServiceCallServiceDiscoveryConfiguration.java:139)
        at org.apache.camel.impl.cloud.ServiceCallProcessorFactory.lambda$retrieveServiceDiscovery$1(ServiceCallProcessorFactory.java:207)
        at org.apache.camel.util.function.Suppliers.firstNotNull(Suppliers.java:119)
        at org.apache.camel.impl.cloud.ServiceCallProcessorFactory.retrieveServiceDiscovery(ServiceCallProcessorFactory.java:205)
        at org.apache.camel.impl.cloud.ServiceCallProcessorFactory.doCreateProcessor(ServiceCallProcessorFactory.java:70)
        at org.apache.camel.impl.cloud.ServiceCallProcessorFactory.doCreateProcessor(ServiceCallProcessorFactory.java:53)
        at org.apache.camel.support.TypedProcessorFactory.createProcessor(TypedProcessorFactory.java:44)
        at org.apache.camel.processor.DefaultProcessorFactory.createProcessor(DefaultProcessorFactory.java:92)
        at org.apache.camel.reifier.ProcessorReifier.makeProcessor(ProcessorReifier.java:833)
        at org.apache.camel.reifier.ProcessorReifier.addRoutes(ProcessorReifier.java:579)
        at org.apache.camel.reifier.RouteReifier.doCreateRoute(RouteReifier.java:236)
        ... 67 more
Caused by: java.lang.NullPointerException
        at org.apache.camel.support.PropertyBindingSupport.doBuildPropertyOgnlPath(PropertyBindingSupport.java:233)
        at org.apache.camel.support.PropertyBindingSupport.doBindProperties(PropertyBindingSupport.java:210)
        at org.apache.camel.support.PropertyBindingSupport.access$100(PropertyBindingSupport.java:88)
        at org.apache.camel.support.PropertyBindingSupport$Builder.bind(PropertyBindingSupport.java:1792)
        at org.apache.camel.model.cloud.ServiceCallServiceDiscoveryConfiguration.newInstance(ServiceCallServiceDiscoveryConfiguration.java:135)
        ... 77 more

The test is here: ppalaga@2012385#diff-989ce3631ecf8363dadfc77ff27f81b105fb6e3534c74b176205f92d67d4d85dR65-R72
I tried to make it as similar to NettyHttpServiceCallRouteTest from Camel source tree as possible. I do not see any substantial difference, but it is still failing on Camel Quarkus side anyway.

I must admit I am quite lost in the generic reifier code.

@lburgazzoli
Copy link
Contributor

I guess we need to register META-INF/services/org/apache/camel/cloud among the service to load/memorize

@ppalaga
Copy link
Contributor Author

ppalaga commented Jul 27, 2021

Yes, exactly.

@ppalaga ppalaga self-assigned this Jul 27, 2021
ppalaga added a commit to ppalaga/camel-quarkus that referenced this issue Jul 27, 2021
ppalaga added a commit to ppalaga/camel-quarkus that referenced this issue Jul 28, 2021
ppalaga added a commit to ppalaga/camel-quarkus that referenced this issue Jul 28, 2021
@ppalaga ppalaga added this to the 2.1.0 milestone Oct 22, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants