oscerd opened a new issue #2344:
URL: https://github.com/apache/camel-quarkus/issues/2344
While trying to create a kamelet source for Infinispan I found out the
consumer doesn't work if the Infinispan cluster is secured.
```java
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
```shell
[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
----------------------------------------------------------------
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.
For queries about this service, please contact Infrastructure at:
[email protected]