[ 
https://issues.apache.org/jira/browse/PLC4X-326?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17450838#comment-17450838
 ] 

DHANABALAN DURAIRAJASIVAM commented on PLC4X-326:
-------------------------------------------------

Thanks Chris,

                   I have tried with keep and reuse the instance it is working 
well in while debugging but when we run in container, i am getting following 
Exception.

 

2021-11-30 03:47:41.924  INFO f9fbb290b3da --- [/producer-route] 
o.a.p.j.PlcDriverManager                 : Instantiating new PLC Driver Manager 
with class loader 
org.springframework.boot.loader.LaunchedURLClassLoader@2096442d
2021-11-30 03:47:41.924  INFO f9fbb290b3da --- [/producer-route] 
o.a.p.j.PlcDriverManager                 : Registering available drivers...
2021-11-30 03:47:41.925  INFO f9fbb290b3da --- [/producer-route] 
o.a.p.j.PlcDriverManager                 : Registering driver for Protocol 
modbus (Modbus)
2021-11-30 03:47:41.926  INFO f9fbb290b3da --- [/producer-route] 
o.a.p.j.u.c.CachedDriverManager          : Creating new cached Connection for 
url modbus:tcp://192.168.52.34?unit-identifier=255&request-timeout=10000 with 
timeout 1000 ms
2021-11-30 03:47:41.974  WARN f9fbb290b3da --- [onPool-worker-3] 
o.a.p.j.u.c.CachedDriverManager          : Unable to establish connection to 
PLC modbus:tcp://192.168.52.34?unit-identifier=255&request-timeout=10000
org.apache.plc4x.java.api.exceptions{*}.PlcConnectionException: Unsupported 
transport tcp{*}
        at 
org.apache.plc4x.java.spi.connection.GeneratedDriverBase.getConnection(GeneratedDriverBase.java:125)
        at 
org.apache.plc4x.java.PlcDriverManager.getConnection(PlcDriverManager.java:73)
        at 
com.jtc.evcharger.bean.ModbusConnection.lambda$CreateConnection$0(ModbusConnection.java:47)
        at 
org.apache.plc4x.java.utils.connectionpool2.CachedDriverManager.lambda$getConnection_$0(CachedDriverManager.java:220)
        at 
java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(Unknown Source)
        at 
java.base/java.util.concurrent.CompletableFuture$AsyncRun.exec(Unknown Source)
        at java.base/java.util.concurrent.ForkJoinTask.doExec(Unknown Source)
        at 
java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(Unknown 
Source)
        at java.base/java.util.concurrent.ForkJoinPool.scan(Unknown Source)
        at java.base/java.util.concurrent.ForkJoinPool.runWorker(Unknown Source)
        at java.base/java.util.concurrent.ForkJoinWorkerThread.run(Unknown 
Source)
2021-11-30 03:47:42.935 ERROR f9fbb290b3da --- [/producer-route] 
o.a.c.p.e.DefaultErrorHandler            : Failed delivery for (MessageId: 
26AD18891AA5F2D-0000000000000000 on ExchangeId: 
26AD18891AA5F2D-0000000000000000). Exhausted after delivery attempt: 1 caught: 
org.apache.plc4x.java.api.exceptions.PlcConnectionException: No Connection 
Available, timed out while waiting in queue.

Message History (complete message history is disabled)
---------------------------------------------------------------------------------------------------------------------------------------
RouteId              ProcessorId          Processor                             
                                           Elapsed (ms)
[route1            ] [route1            ] 
[from[timer://producer-route?fixedRate=true&period=10s]                        
] [      1053]
        ...
[route2            ] [bean7             ] 
[bean[com.jtc.evcharger.bean.ModbusScan]                                       
] [         0]

Stacktrace
---------------------------------------------------------------------------------------------------------------------------------------

*org.apache.plc4x.java.api.exceptions.PlcConnectionException: No Connection 
Available, timed out while waiting in queue.*
        at 
org.apache.plc4x.java.utils.connectionpool2.CachedDriverManager.getConnection(CachedDriverManager.java:184)
        at 
com.jtc.evcharger.bean.ModbusScan.GetEvChargerData(ModbusScan.java:104)
        at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at 
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown 
Source)
        at java.base/java.lang.reflect.Method.invoke(Unknown Source)
        at 
org.apache.camel.support.ObjectHelper.invokeMethodSafe(ObjectHelper.java:382)
        at 
org.apache.camel.component.bean.MethodInfo.invoke(MethodInfo.java:494)
        at 
org.apache.camel.component.bean.MethodInfo$1.doProceed(MethodInfo.java:316)
        at 
org.apache.camel.component.bean.MethodInfo$1.proceed(MethodInfo.java:286)
        at 
org.apache.camel.component.bean.AbstractBeanProcessor.process(AbstractBeanProcessor.java:146)
        at 
org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:81)
        at 
org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$SimpleTask.run(RedeliveryErrorHandler.java:463)
        at 
org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:179)
        at 
org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(DefaultReactiveExecutor.java:64)
        at org.apache.camel.processor.Pipeline.process(Pipeline.java:184)
        at 
org.apache.camel.impl.engine.CamelInternalProcessor.process(CamelInternalProcessor.java:398)
        at 
org.apache.camel.component.timer.TimerConsumer.sendTimerExchange(TimerConsumer.java:210)
        at 
org.apache.camel.component.timer.TimerConsumer$1.run(TimerConsumer.java:76)
        at java.base/java.util.TimerThread.mainLoop(Unknown Source)
        at java.base/java.util.TimerThread.run(Unknown Source)
Caused by: java.util.concurrent.TimeoutException
        at java.base/java.util.concurrent.CompletableFuture.timedGet(Unknown 
Source)
        at java.base/java.util.concurrent.CompletableFuture.get(Unknown Source)
        at 
org.apache.plc4x.java.utils.connectionpool2.CachedDriverManager.getConnection(CachedDriverManager.java:182)
        ... 20 more
2021-11-30 03:47:42.946  WARN f9fbb290b3da --- [/producer-route] 
o.a.c.c.t.TimerConsumer                  : Error processing exchange. 
Exchange[26AD18891AA5F2D-0000000000000000]. Caused by: 
[org.apache.plc4x.java.api.exceptions.PlcConnectionException - No Connection 
Available, timed out while waiting in queue.]
org.apache.plc4x.java.api.exceptions.PlcConnectionException: No Connection 
Available, timed out while waiting in queue.
        at 
org.apache.plc4x.java.utils.connectionpool2.CachedDriverManager.getConnection(CachedDriverManager.java:184)
        at 
com.jtc.evcharger.bean.ModbusScan.GetEvChargerData(ModbusScan.java:104)
        at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at 
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown 
Source)
        at java.base/java.lang.reflect.Method.invoke(Unknown Source)
        at 
org.apache.camel.support.ObjectHelper.invokeMethodSafe(ObjectHelper.java:382)
        at 
org.apache.camel.component.bean.MethodInfo.invoke(MethodInfo.java:494)
        at 
org.apache.camel.component.bean.MethodInfo$1.doProceed(MethodInfo.java:316)
        at 
org.apache.camel.component.bean.MethodInfo$1.proceed(MethodInfo.java:286)
        at 
org.apache.camel.component.bean.AbstractBeanProcessor.process(AbstractBeanProcessor.java:146)
        at 
org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:81)
        at 
org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$SimpleTask.run(RedeliveryErrorHandler.java:463)
        at 
org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:179)
        at 
org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(DefaultReactiveExecutor.java:64)
        at org.apache.camel.processor.Pipeline.process(Pipeline.java:184)
        at 
org.apache.camel.impl.engine.CamelInternalProcessor.process(CamelInternalProcessor.java:398)
        at 
org.apache.camel.component.timer.TimerConsumer.sendTimerExchange(TimerConsumer.java:210)
        at 
org.apache.camel.component.timer.TimerConsumer$1.run(TimerConsumer.java:76)
        at java.base/java.util.TimerThread.mainLoop(Unknown Source)
        at java.base/java.util.TimerThread.run(Unknown Source)

> org.apache.plc4x.java.api.exceptions.PlcConnectionException: Error creating 
> channel
> -----------------------------------------------------------------------------------
>
>                 Key: PLC4X-326
>                 URL: https://issues.apache.org/jira/browse/PLC4X-326
>             Project: Apache PLC4X
>          Issue Type: Bug
>          Components: Driver-Modbus
>    Affects Versions: 0.9.0
>            Reporter: DHANABALAN DURAIRAJASIVAM
>            Priority: Critical
>
> Hello All,
>                  I have used to poll the Modbus Registers every 10 Seconds 
> and for modbus connection, I have used the connection Code from example 
> given. (see below).
> _try (PlcConnection plcConnection = new 
> PlcDriverManager().getConnection(connectionString)) \{ ... do something with 
> the connection here ... }_
>  
> _Above code  created in a bean and bean has been called by camel producer 
> every 10 sec._
> *The Question is ,does this above code close the connection itself when 
> repeatedly called by new instance? or we need to handle connection close?*
> *Exception.*
> org.apache.plc4x.java.api.exceptions.PlcConnectionException: Error creating 
> channel.
>     at 
> org.apache.plc4x.java.spi.connection.NettyChannelFactory.createChannel(NettyChannelFactory.java:130)
>     at 
> org.apache.plc4x.java.spi.connection.DefaultNettyPlcConnection.connect(DefaultNettyPlcConnection.java:121)
>     at 
> org.apache.plc4x.java.PlcDriverManager.getConnection(PlcDriverManager.java:74)
>     at com.jtc.evcharger.bean.ModbusScan.GetEvChargerData(ModbusScan.java:82)
>     at jdk.internal.reflect.GeneratedMethodAccessor47.invoke(Unknown Source)
>     at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown 
> Source)
>     at java.base/java.lang.reflect.Method.invoke(Unknown Source)
>     at 
> org.apache.camel.support.ObjectHelper.invokeMethodSafe(ObjectHelper.java:382)
>     at org.apache.camel.component.bean.MethodInfo.invoke(MethodInfo.java:494)
>     at 
> org.apache.camel.component.bean.MethodInfo$1.doProceed(MethodInfo.java:316)
>     at 
> org.apache.camel.component.bean.MethodInfo$1.proceed(MethodInfo.java:286)
>     at 
> org.apache.camel.component.bean.AbstractBeanProcessor.process(AbstractBeanProcessor.java:146)
>     at 
> org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:81)
>     at 
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$SimpleTask.run(RedeliveryErrorHandler.java:463)
>     at 
> org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:179)
>     at 
> org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(DefaultReactiveExecutor.java:64)
>     at org.apache.camel.processor.Pipeline.process(Pipeline.java:184)
>     at 
> org.apache.camel.impl.engine.CamelInternalProcessor.process(CamelInternalProcessor.java:398)
>     at 
> org.apache.camel.component.timer.TimerConsumer.sendTimerExchange(TimerConsumer.java:210)
>     at 
> org.apache.camel.component.timer.TimerConsumer$1.run(TimerConsumer.java:76)
>     at java.base/java.util.TimerThread.mainLoop(Unknown Source)
>     at java.base/java.util.TimerThread.run(Unknown Source)
> Caused by: java.lang.IllegalStateException: failed to create a child event 
> loop
>     at 
> io.netty.util.concurrent.MultithreadEventExecutorGroup.<init>(MultithreadEventExecutorGroup.java:88)
>     at 
> io.netty.util.concurrent.MultithreadEventExecutorGroup.<init>(MultithreadEventExecutorGroup.java:60)
>     at 
> io.netty.channel.MultithreadEventLoopGroup.<init>(MultithreadEventLoopGroup.java:52)
>     at 
> io.netty.channel.nio.NioEventLoopGroup.<init>(NioEventLoopGroup.java:97)
>     at 
> io.netty.channel.nio.NioEventLoopGroup.<init>(NioEventLoopGroup.java:92)
>     at 
> io.netty.channel.nio.NioEventLoopGroup.<init>(NioEventLoopGroup.java:73)
>     at 
> io.netty.channel.nio.NioEventLoopGroup.<init>(NioEventLoopGroup.java:53)
>     at 
> io.netty.channel.nio.NioEventLoopGroup.<init>(NioEventLoopGroup.java:45)
>     at 
> org.apache.plc4x.java.spi.connection.NettyChannelFactory.getEventLoopGroup(NettyChannelFactory.java:86)
>     at 
> org.apache.plc4x.java.spi.connection.NettyChannelFactory.createChannel(NettyChannelFactory.java:94)
>     ... 21 more
> Caused by: io.netty.channel.ChannelException: failed to open a new selector
>     at io.netty.channel.nio.NioEventLoop.openSelector(NioEventLoop.java:175)
>     at io.netty.channel.nio.NioEventLoop.<init>(NioEventLoop.java:142)
>     at 
> io.netty.channel.nio.NioEventLoopGroup.newChild(NioEventLoopGroup.java:183)
>     at 
> io.netty.channel.nio.NioEventLoopGroup.newChild(NioEventLoopGroup.java:38)
>     at 
> io.netty.util.concurrent.MultithreadEventExecutorGroup.<init>(MultithreadEventExecutorGroup.java:84)
>     ... 30 more
> Caused by: java.io.IOException: Too many open files
>     at java.base/sun.nio.ch.EPoll.create(Native Method)
>     at java.base/sun.nio.ch.EPollSelectorImpl.<init>(Unknown Source)
>     at java.base/sun.nio.ch.EPollSelectorProvider.openSelector(Unknown Source)
>     at io.netty.channel.nio.NioEventLoop.openSelector(NioEventLoop.java:173)
>  



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to