Clebert,


Il Mar 11 Lug 2023, 15:55 Clebert Suconic <clebert.suco...@gmail.com> ha
scritto:

> created a JIRA:
>
> https://issues.apache.org/jira/browse/SUREFIRE-2186



Thanks.
Would you have time to contribute a fix?

Enrico

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

Reply via email to