camel-quarkus: Camel-Infinispan consumer doesn't work
While trying to create a kamelet source for Infinispan I found out the consumer doesn’t work if the Infinispan cluster is secured.
from("infinispan://mycache?autowiredEnabled=false&hosts=localhost&username=admin&password=password&securityRealm=default&secure=true&saslMechanism=RAW(DIGEST-MD5)&securityServerName=infinispan&eventTypes=CLIENT_CACHE_ENTRY_CREATED")
.to("log:example");
This gives the following exception
[INFO] --- quarkus-maven-plugin:1.12.0.Final:dev (default-cli) @ camel-quarkus-examples-infinispan-log-main ---
Listening for transport dt_socket at address: 5005
2021-03-18 08:43:16,182 INFO [io.quarkus] (Quarkus Main Thread) camel-quarkus-examples-infinispan-log-main 1.6.0-SNAPSHOT on JVM (powered by Quarkus 1.12.0.Final) started in 0.169s.
2021-03-18 08:43:16,184 INFO [io.quarkus] (Quarkus Main Thread) Profile dev activated. Live Coding activated.
2021-03-18 08:43:16,184 INFO [io.quarkus] (Quarkus Main Thread) Installed features: [camel-core, camel-infinispan, camel-log, camel-main, camel-support-common, cdi, infinispan-client]
2021-03-18 08:43:16,218 INFO [org.apa.cam.mai.BaseMainSupport] (Quarkus Main Thread) Auto-configuration summary
2021-03-18 08:43:16,219 INFO [org.apa.cam.mai.BaseMainSupport] (Quarkus Main Thread) camel.main.durationHitExitCode=15
2021-03-18 08:43:16,219 INFO [org.apa.cam.mai.BaseMainSupport] (Quarkus Main Thread) camel.component.log.exchangeFormatter.showBodyType=false
2021-03-18 08:43:16,219 INFO [org.apa.cam.mai.BaseMainSupport] (Quarkus Main Thread) camel.component.log.exchangeFormatter.showExchangePattern=false
2021-03-18 08:43:16,219 INFO [org.apa.cam.mai.BaseMainSupport] (Quarkus Main Thread) camel.component.log.exchangeFormatter=#class:org.apache.camel.support.processor.DefaultExchangeFormatter
2021-03-18 08:43:16,376 INFO [org.inf.HOTROD] (Quarkus Main Thread) ISPN004021: Infinispan version: Infinispan 'Lockdown' 12.0.0.Final
2021-03-18 08:43:16,385 INFO [org.inf.HOTROD] (HotRod-client-async-pool-1-1) ISPN004006: Server sent new topology view (id=1, age=0) containing 1 addresses: [127.0.0.1:11222]
2021-03-18 08:43:16,401 WARN [org.inf.HOTROD] (HotRod-client-async-pool-1-1) ISPN004005: Error received from the server: java.lang.SecurityException: ISPN006017: Unauthorized 'PUT' operation
2021-03-18 08:43:16,407 ERROR [org.apa.cam.qua.mai.CamelMainRuntime] (Quarkus Main Thread) Failed to start application: org.apache.camel.FailedToCreateRouteException: Failed to create route route1: Route(route1)[From[infinispan://mycache?autowiredEnabled=fal... because of Failed to resolve endpoint: infinispan://mycache?autowiredEnabled=false&eventTypes=CLIENT_CACHE_ENTRY_CREATED&hosts=localhost&password=xxxxxx&saslMechanism=RAW(DIGEST-MD5)&secure=true&securityRealm=default&securityServerName=infinispan&username=admin due to: Cannot auto create component: infinispan
at org.apache.camel.reifier.RouteReifier.createRoute(RouteReifier.java:80)
at org.apache.camel.quarkus.core.FastCamelContext.startRouteDefinitions(FastCamelContext.java:919)
at org.apache.camel.quarkus.core.FastCamelContext.startRouteDefinitions(FastCamelContext.java:656)
at org.apache.camel.impl.engine.AbstractCamelContext.doInit(AbstractCamelContext.java:2756)
at org.apache.camel.quarkus.core.FastCamelContext.doInit(FastCamelContext.java:537)
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:2492)
at org.apache.camel.quarkus.main.CamelMain.doStart(CamelMain.java:86)
at org.apache.camel.support.service.BaseService.start(BaseService.java:115)
at org.apache.camel.quarkus.main.CamelMain.startEngine(CamelMain.java:131)
at org.apache.camel.quarkus.main.CamelMainRuntime.start(CamelMainRuntime.java:49)
at org.apache.camel.quarkus.main.CamelMainApplication.run(CamelMainApplication.java:27)
at org.apache.camel.quarkus.main.CamelMainApplication_ClientProxy.run(CamelMainApplication_ClientProxy.zig:129)
at io.quarkus.runtime.ApplicationLifecycleManager.run(ApplicationLifecycleManager.java:122)
at io.quarkus.runtime.Quarkus.run(Quarkus.java:66)
at io.quarkus.runtime.Quarkus.run(Quarkus.java:42)
at org.acme.timer.Main.main(Main.java:28)
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$3.run(StartupActionImpl.java:134)
at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: org.apache.camel.ResolveEndpointFailedException: Failed to resolve endpoint: infinispan://mycache?autowiredEnabled=false&eventTypes=CLIENT_CACHE_ENTRY_CREATED&hosts=localhost&password=xxxxxx&saslMechanism=RAW(DIGEST-MD5)&secure=true&securityRealm=default&securityServerName=infinispan&username=admin due to: Cannot auto create component: infinispan
at org.apache.camel.impl.engine.AbstractCamelContext.doGetEndpoint(AbstractCamelContext.java:954)
at org.apache.camel.impl.engine.AbstractCamelContext.getEndpoint(AbstractCamelContext.java:831)
at org.apache.camel.support.CamelContextHelper.getMandatoryEndpoint(CamelContextHelper.java:58)
at org.apache.camel.reifier.AbstractReifier.resolveEndpoint(AbstractReifier.java:177)
at org.apache.camel.reifier.RouteReifier.doCreateRoute(RouteReifier.java:94)
at org.apache.camel.reifier.RouteReifier.createRoute(RouteReifier.java:74)
... 24 more
Caused by: org.apache.camel.RuntimeCamelException: Cannot auto create component: infinispan
at org.apache.camel.impl.engine.AbstractCamelContext.getComponent(AbstractCamelContext.java:606)
at org.apache.camel.impl.engine.AbstractCamelContext.getComponent(AbstractCamelContext.java:561)
at org.apache.camel.impl.engine.AbstractCamelContext.doGetEndpoint(AbstractCamelContext.java:912)
... 29 more
Caused by: org.apache.camel.RuntimeCamelException: Cannot auto create component: infinispan
at org.apache.camel.impl.engine.AbstractCamelContext.initComponent(AbstractCamelContext.java:671)
at org.apache.camel.impl.engine.AbstractCamelContext.access$100(AbstractCamelContext.java:186)
at org.apache.camel.impl.engine.AbstractCamelContext$3.apply(AbstractCamelContext.java:590)
at org.apache.camel.impl.engine.AbstractCamelContext$3.apply(AbstractCamelContext.java:586)
at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1705)
at org.apache.camel.impl.engine.AbstractCamelContext.getComponent(AbstractCamelContext.java:586)
... 31 more
Caused by: org.infinispan.client.hotrod.exceptions.HotRodClientException:Request for messageId=4 returned server error (status=0x85): java.lang.SecurityException: ISPN006017: Unauthorized 'PUT' operation
at org.infinispan.client.hotrod.impl.protocol.Codec20.checkForErrorsInResponseStatus(Codec20.java:333)
at org.infinispan.client.hotrod.impl.protocol.Codec20.readHeader(Codec20.java:172)
at org.infinispan.client.hotrod.impl.transport.netty.HeaderDecoder.decode(HeaderDecoder.java:139)
at org.infinispan.client.hotrod.impl.transport.netty.HintedReplayingDecoder.callDecode(HintedReplayingDecoder.java:94)
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:276)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:286)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:792)
at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:475)
at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:378)
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
... 1 more
2021-03-18 08:43:16,409 ERROR [io.qua.run.Application] (Quarkus Main Thread) Failed to start application (with profile dev): org.infinispan.client.hotrod.exceptions.HotRodClientException:Request for messageId=4 returned server error (status=0x85): java.lang.SecurityException: ISPN006017: Unauthorized 'PUT' operation
at org.infinispan.client.hotrod.impl.protocol.Codec20.checkForErrorsInResponseStatus(Codec20.java:333)
at org.infinispan.client.hotrod.impl.protocol.Codec20.readHeader(Codec20.java:172)
at org.infinispan.client.hotrod.impl.transport.netty.HeaderDecoder.decode(HeaderDecoder.java:139)
at org.infinispan.client.hotrod.impl.transport.netty.HintedReplayingDecoder.callDecode(HintedReplayingDecoder.java:94)
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:276)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:286)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:792)
at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:475)
at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:378)
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:834)
2021-03-18 08:43:16,445 INFO [io.quarkus] (Quarkus Main Thread) camel-quarkus-examples-infinispan-log-main stopped in 0.035s
How to set up the Infinispan cluster for this purpose (version is 12.0.0.Final)
Download the zip distribution and unzip it somewhere.
Start the server
> $INFINISPAN_HOME/bin/server.sh
bin/server.sh
18:07:32,435 INFO (main) [BOOT] JVM OpenJDK 64-Bit Server VM AdoptOpenJDK 11.0.7+10
18:07:32,441 INFO (main) [BOOT] JVM arguments = [-server, -Xlog:gc*:file=/home/oscerd/playground/infinispan-server-12.0.0.Final/server/log/gc.log:time,uptimemillis:filecount=5,filesize=3M, -Xms64m, -Xmx512m, -XX:MetaspaceSize=64M, -Djava.net.preferIPv4Stack=true, -Djava.awt.headless=true, -Dvisualvm.display.name=infinispan-server, -Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager, -Dinfinispan.server.home.path=/home/oscerd/playground/infinispan-server-12.0.0.Final, -classpath, :/home/oscerd/playground/infinispan-server-12.0.0.Final/boot/infinispan-server-runtime-12.0.0.Final-loader.jar, org.infinispan.server.loader.Loader, org.infinispan.server.Bootstrap]
18:07:32,441 INFO (main) [BOOT] PID = 21270
18:07:32,466 INFO (main) [org.infinispan.SERVER] ISPN080000: Infinispan Server starting
18:07:32,466 INFO (main) [org.infinispan.SERVER] ISPN080017: Server configuration: infinispan.xml
18:07:32,466 INFO (main) [org.infinispan.SERVER] ISPN080032: Logging configuration: /home/oscerd/playground/infinispan-server-12.0.0.Final/server/conf/log4j2.xml
18:07:32,823 INFO (main) [org.infinispan.SERVER] ISPN080027: Loaded extension 'query-dsl-filter-converter-factory'
18:07:32,823 INFO (main) [org.infinispan.SERVER] ISPN080027: Loaded extension 'continuous-query-filter-converter-factory'
18:07:32,825 INFO (main) [org.infinispan.SERVER] ISPN080027: Loaded extension 'iteration-filter-converter-factory'
18:07:32,825 INFO (main) [org.infinispan.SERVER] ISPN080027: Loaded extension 'jdk.nashorn.api.scripting.NashornScriptEngineFactory'
18:07:33,172 INFO (main) [org.infinispan.CONTAINER] ISPN000556: Starting user marshaller 'org.infinispan.commons.marshall.ImmutableProtoStreamMarshaller'
18:07:33,262 WARN (main) [org.infinispan.PERSISTENCE] ISPN000554: jboss-marshalling is deprecated and planned for removal
18:07:33,545 INFO (main) [org.infinispan.query.remote.impl.ProtobufMetadataManagerImpl] ISPN028019: Registering protostream serialization context initializer: org.infinispan.query.core.stats.impl.PersistenceContextInitializerImpl
18:07:33,547 INFO (main) [org.infinispan.CONTAINER] ISPN000128: Infinispan version: Infinispan 'Lockdown' 12.0.0.Final
18:07:33,687 INFO (main) [org.infinispan.CLUSTER] ISPN000078: Starting JGroups channel cluster with stack tcp
18:07:35,796 INFO (main) [org.jgroups.protocols.pbcast.GMS] ghost-43669: no members discovered after 2002 ms: creating cluster as coordinator
18:07:35,832 INFO (main) [org.infinispan.CLUSTER] ISPN000094: Received new cluster view for channel cluster: [ghost-43669|0] (1) [ghost-43669]
18:07:35,843 INFO (main) [org.infinispan.CLUSTER] ISPN000079: Channel cluster local address is ghost-43669, physical addresses are [10.36.115.182:7800]
18:07:35,878 INFO (main) [org.infinispan.CONTAINER] ISPN000390: Persisted state, version=12.0.0.Final timestamp=2021-03-01T17:07:35.875687Z
18:07:36,081 INFO (main) [org.jboss.threads] JBoss Threads version 2.3.3.Final
18:07:36,150 INFO (main) [org.infinispan.CONTAINER] ISPN000104: Using EmbeddedTransactionManager
18:07:36,447 INFO (main) [org.infinispan.server.core.RequestTracer] OpenTracing integration is disabled
18:07:36,510 INFO (ForkJoinPool.commonPool-worker-3) [org.infinispan.SERVER] ISPN080018: Started connector HotRod (internal)
18:07:36,601 INFO (main) [org.infinispan.SERVER] ISPN080018: Started connector REST (internal)
18:07:36,762 INFO (main) [org.infinispan.SERVER] ISPN080004: Connector SINGLE_PORT (default) listening on 127.0.0.1:11222
18:07:36,762 INFO (main) [org.infinispan.SERVER] ISPN080034: Server 'ghost-43669' listening on http://127.0.0.1:11222
18:07:36,763 INFO (main) [org.infinispan.SERVER] ISPN080001: Infinispan Server 12.0.0.Final started in 4296ms
Create user
> $INFINISPAN_HOME/bin/cli.sh user create admin -p "password"
> $INFINISPAN_HOME/bin/cli.sh
[disconnected]> connect
Username: admin
Password: ********
[ghost-35169@cluster//containers/default]> create cache --template=org.infinispan.DIST_SYNC mycache
[ghost-35169@cluster//containers/default]> describe caches/mycache
{
"distributed-cache" : {
"mode" : "SYNC",
"remote-timeout" : 17500,
"state-transfer" : {
"timeout" : 60000
},
"locking" : {
"concurrency-level" : 1000,
"acquire-timeout" : 15000,
"striping" : false
},
"statistics" : true
}
}
Stop the server.
It’s important to add encoding to your cache configuration, otherwise consuming events won’t work. You’ll need to:
- Edit $INFINISPAN_HOME/server/data/caches.xml
and add the encoding section in the configuration
<?xml version="1.0" ?>
<infinispan xmlns="urn:infinispan:config:12.0">
<cache-container>
<distributed-cache mode="SYNC" remote-timeout="17500" name="mycache" statistics="true">
<encoding>
<key media-type="text/plain; charset=UTF-8"/>
<value media-type="text/plain; charset=UTF-8"/>
</encoding>
<locking concurrency-level="1000" acquire-timeout="15000" striping="false"/>
<state-transfer timeout="60000"/>
</distributed-cache>
</cache-container></infinispan>
Restart the server.
The extension will fail immediately. The same configuration with the plain camel component seems to work fine.
I used the camel-quarkus-examples as base.
Here is the example on my fork.
https://github.com/oscerd/camel-quarkus-examples/commit/cce809b2c5d62d695f8b4cfdea08bc9fc2145731
About this issue
- Original URL
- State: closed
- Created 3 years ago
- Comments: 16 (16 by maintainers)
This happens through kamelet on camel-k, so it may be related to the reported camel-k issue. Let me see if it works with the fix @lburgazzoli is doing. I don’t want you to waste your time.