created a JIRA: https://issues.apache.org/jira/browse/SUREFIRE-2186
On Tue, Jul 11, 2023 at 9:33 AM Clebert Suconic <clebert.suco...@gmail.com> wrote: > > You guys need to be careful with non static ThreadLocals. > > > ClassMethodIndexer has a non static ThreadLocal. > > threadLocals will create a hashEntry somewhere deep in the JDK. > Depending on the number of tests that are running you guys may break > things like ReadWriteLock because it will transverse a lot of entries. > (I have been bitten by this before). > > > Also, I have a reproducer: > > > git clone https://github.com/clebertsuconic/surefire-reproducer.git > cd surefire-reproducer > mvn install > > > > This little project is using check-leak to count the number of > instances of ClassObject. I have set the assertions as max 20 > instances. I have a copy&paste test that is validating this over and > over. > > > And it's always leaking inside a ConcurrentHashMap that's being held > by ClassMethodIndex which is used by JUnit4Listener. > > > > and you guys should really stop using non static ThreadLocals.. I have > found another case where it was used but at least the remove was > called.. but still a bit scary to my test (It should just use a static > final... what's the point of a ThreadLocal if it's not static on a > class an associated to the instance?) > > > > > Should I open a JIRA about this? > > On Mon, Jul 10, 2023 at 2:13 PM Clebert Suconic > <clebert.suco...@gmail.com> wrote: > > > > We have recently upgraded surefire into artemis from 2.x, and > > strangely our testsuite started to crash because of memory. > > > > > > So, it happens that I had other memory leaks in the past and I became > > addicted into finding them, up to a point that I created a project > > that will track memory usage over a java app, or be used on test cases > > to make sure leaks are not happening: > > > > > > https://github.com/check-leak/check-leak > > > > > > So, > > > > > > I ran this testsuite from artemis: > > > > git clone g...@github.com:apache/activemq-artemis.git > > cd activemq-artemis > > mvn install -DskipTests=true > > cd tests/integration-tests > > mvn -Ptests tests > > > > > > > > get check-leak: > > curl > > https://github.com/check-leak/check-leak/releases/download/0.11/check-leak-0.11.jar > > > > so after finding the process ID for the surefire: > > java -jar check-leak-0.11.jar --sleep 5000 --pid <surefire-pid> > > --report ./report-leak > > > > > > > > As the test progress, open ./report-leak/index.html > > > > > > you may refresh the page as the process go. > > > > > > and if you look at the objects allocations for > > org.apache.maven.surefire.api.util.internal.ClassMethod, the > > allocations are only growing after the lates version, and never being > > released. > > > > > > > > > > is there any idea about what might be causing it? > > > > > > if you have a big project with many tests like I do, memory > > allocations may be an issue and I would need to use a bigger VM just > > because of this probably leak. > > > > -- > Clebert Suconic -- Clebert Suconic --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@maven.apache.org For additional commands, e-mail: users-h...@maven.apache.org