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]


Reply via email to