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 > >> > > > >