Hi Adam,

of course that's unfortunate ... also I will not be able to address this issue 
soon as I have to work on the tasks of my research project.
I have one more month to work on this and I'm months behind schedule because I 
have been doing free support way too much lately.

I really hope Julian will be able to help ... he's way more into the details of 
Netty than I am (cause he's got the book ;-) ) 

So Julian? ... it would be super awesome if you could take on this issue.

Chris

 

Am 24.08.20, 00:17 schrieb "Adam Rossi" <ac.ro...@gmail.com>:

    Thanks, I did test with 0.8.0-SNAPSHOT and see the same behavior. In every
    plcConnection a nioEventLoopGroup thread is created and does not ever seem
    to be destroyed.

    I wish I understood the io.netty.channel.EventLoopGroup class better to be
    more helpful here. Would an example program that reproduces this thread
    leak be useful?

    jconsole shows the thread data as:

    Name: nioEventLoopGroup-19-1
    State: RUNNABLE
    Total blocked: 0  Total waited: 0

    Stack trace:
    java.base@13.0.2/sun.nio.ch.EPoll.wait(Native Method)
    java.base@13.0.2
    /sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:120)
    java.base@13.0.2
    /sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:124)
       - locked io.netty.channel.nio.SelectedSelectionKeySet@1838f97
       - locked sun.nio.ch.EPollSelectorImpl@1f49287
    java.base@13.0.2/sun.nio.ch.SelectorImpl.select(SelectorImpl.java:141)
    
app//io.netty.channel.nio.SelectedSelectionKeySetSelector.select(SelectedSelectionKeySetSelector.java:68)
    app//io.netty.channel.nio.NioEventLoop.select(NioEventLoop.java:803)
    app//io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:457)
    
app//io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
    
app//io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
    
app//io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
    java.base@13.0.2/java.lang.Thread.run(Thread.java:830)


    Regards, Adam

    On Sun, Aug 23, 2020 at 1:00 PM Christofer Dutz <christofer.d...@c-ware.de>
    wrote:

    > Hi Adam,
    >
    > the Apache SNAPSHOT repo is at:
    > https://repository.apache.org/content/repositories/snapshots
    >
    > Adding this to your pom should help:
    >
    >   <!-- Make Snapshots of Apache projects available -->
    >   <repositories>
    >     <repository>
    >       <id>apache-snapshots</id>
    >       <url>https://repository.apache.org/content/repositories/snapshots
    > </url>
    >       <releases>
    >         <enabled>false</enabled>
    >       </releases>
    >       <snapshots>
    >         <enabled>true</enabled>
    >       </snapshots>
    >     </repository>
    >   </repositories>
    >
    >   <!-- Make Snapshots of Apache plugins available -->
    >   <pluginRepositories>
    >     <pluginRepository>
    >       <id>apache-snapshots</id>
    >       <url>https://repository.apache.org/content/repositories/snapshots
    > </url>
    >       <releases>
    >         <enabled>false</enabled>
    >       </releases>
    >       <snapshots>
    >         <enabled>true</enabled>
    >       </snapshots>
    >     </pluginRepository>
    >   </pluginRepositories>
    >
    > Chris
    > Am 23.08.20, 18:56 schrieb "Adam Rossi" <ac.ro...@gmail.com>:
    >
    >     Sure thing. Is 0.8.0-snapshot hosted anywhere or is that something
    > that needs to be built? Regards Adam
    >
    >     > On Aug 23, 2020, at 12:31 PM, Christofer Dutz <
    > christofer.d...@c-ware.de> wrote:
    >     >
    >     > Hmm ...
    >     >
    >     > Could you possibly give 0.8.0-SNAPSHOT a try? .... or 0.6.x? ...
    > 0.7.0 was the first of the new generation drivers. We're maintaining the
    > 0.6 branch and working hard on making the new generation drivers 100%
    > production ready.
    >     >
    >     > Chris
    >     >
    >     >
    >     > Am 23.08.20, 18:06 schrieb "Adam Rossi" <ac.ro...@gmail.com>:
    >     >
    >     >    This is the latest 0.7.0 release from Maven.
    >     >
    >     >
    >     >    Regards Adam
    >     >
    >     >> On Aug 23, 2020, at 11:56 AM, Christofer Dutz <
    > christofer.d...@c-ware.de> wrote:
    >     >>
    >     >> Hi Adam,
    >     >>
    >     >> which version of PLC4X are you using? I know we had similar reports
    > some time ago, but had thought we had fixed them
    >     >>
    >     >> Chris
    >     >>
    >     >>
    >     >>
    >     >> Am 23.08.20, 16:40 schrieb "Adam Rossi" <ac.ro...@gmail.com>:
    >     >>
    >     >>   Howdy. I am seeing a persistent thread being created for every
    >     >>   plcConnection connect which looks like the following:
    >     >>
    >     >>   Name: nioEventLoopGroup-11-1
    >     >>   State: RUNNABLE
    >     >>   Total blocked: 0  Total waited: 0
    >     >>
    >     >>   Stack trace:
    >     >>   java.base@13.0.2/sun.nio.ch.EPoll.wait(Native Method)
    >     >>   java.base@13.0.2
    >     >>   
/sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:120)
    >     >>   java.base@13.0.2
    >     >>   /sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:124)
    >     >>      - locked io.netty.channel.nio.SelectedSelectionKeySet@f6df6b
    >     >>      - locked sun.nio.ch.EPollSelectorImpl@7ffc19
    >     >>   java.base@13.0.2/sun.nio.ch
    > .SelectorImpl.select(SelectorImpl.java:141)
    >     >>
    >  
app//io.netty.channel.nio.SelectedSelectionKeySetSelector.select(SelectedSelectionKeySetSelector.java:68)
    >     >>
    >  app//io.netty.channel.nio.NioEventLoop.select(NioEventLoop.java:803)
    >     >>   app//io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:457)
    >     >>
    >  
app//io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
    >     >>
    >  
app//io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
    >     >>
    >  
app//io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
    >     >>   java.base@13.0.2/java.lang.Thread.run(Thread.java:830)
    >     >>
    >     >>
    >     >>   This happens both when creating a connection directly or when
    > using the
    >     >>   plc4x connection pool.
    >     >>
    >     >>   In both cases I am obtaining the connection, reading some modbus
    > values,
    >     >>   and then closing the connection. From the plcConnection metadata
    > the
    >     >>   connection type I am using is:
    >     >>
    >     >>   org.apache.plc4x.java.spi.connection.DefaultNettyPlcConnection
    >     >>
    >     >>   Over time thousands of these nioEventLoopGroup threads are
    > created and I
    >     >>   experience an OutOfMemory error in my program.
    >     >>
    >     >>   Has anyone experienced this problem? Is there a way to force
    > these threads
    >     >>   to close, timeout, or to specify the total thread limit?
    >     >>
    >     >>   Thanks and Regards, Adam
    >     >>
    >     >
    >
    >

Reply via email to