Hi Adam,

I will have a look today!

Do we have a Jira Issue for it already?

Julian

Am 24.08.20, 07:38 schrieb "Christofer Dutz" <[email protected]>:

    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" <[email protected]>:

        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:
        [email protected]/sun.nio.ch.EPoll.wait(Native Method)
        [email protected]
        /sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:120)
        [email protected]
        /sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:124)
           - locked io.netty.channel.nio.SelectedSelectionKeySet@1838f97
           - locked sun.nio.ch.EPollSelectorImpl@1f49287
        [email protected]/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)
        [email protected]/java.lang.Thread.run(Thread.java:830)


        Regards, Adam

        On Sun, Aug 23, 2020 at 1:00 PM Christofer Dutz 
<[email protected]>
        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" <[email protected]>:
        >
        >     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 <
        > [email protected]> 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" <[email protected]>:
        >     >
        >     >    This is the latest 0.7.0 release from Maven.
        >     >
        >     >
        >     >    Regards Adam
        >     >
        >     >> On Aug 23, 2020, at 11:56 AM, Christofer Dutz <
        > [email protected]> 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" <[email protected]>:
        >     >>
        >     >>   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:
        >     >>   [email protected]/sun.nio.ch.EPoll.wait(Native Method)
        >     >>   [email protected]
        >     >>   
/sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:120)
        >     >>   [email protected]
        >     >>   
/sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:124)
        >     >>      - locked 
io.netty.channel.nio.SelectedSelectionKeySet@f6df6b
        >     >>      - locked sun.nio.ch.EPollSelectorImpl@7ffc19
        >     >>   [email protected]/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)
        >     >>   [email protected]/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