[
https://issues.apache.org/jira/browse/TOMEE-4120?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17654199#comment-17654199
]
David Blevins edited comment on TOMEE-4120 at 1/3/23 10:54 PM:
---------------------------------------------------------------
Hi Thomas,
Don't count yourself out so easily, you're clearly doing great tracking all
this down. Yes, there are people who know the code more than you, but the
honest answer is there are not many of those people. For example, I wrote all
the first versions of the OpenEJB client code and remote protocol. It's barely
been changed, still holds up and really no one knows it better than me, period.
I still contribute, but I'm also the CEO of a company so I just don't have the
time to contribute as much as I'd like. The person who wrote all the BMP/CMP
code, added the liveHandleRegistry and related logic is Dain Sundstrom. Dain
co-founded another project called Trino (formerly Presto) and is now the CTO of
a company with a 3.35 billion evaluation and hasn't worked on TomEE for quite a
few years.
If we look at [contributions in the last 12
months|https://github.com/apache/tomee/graphs/contributors?from=2022-01-01&to=2023-01-03&type=c],
top of the list is Jean-Louis. He worked till 10pm his time today. Next one
down is Richard. Richard is a user like you and works for a university in
Germany that uses TomEE. He hasn't worked on any of the remote EJB or BMP code
and contributes in his spare time. After those two there's me (experience, but
no time). After that, contributions are quite low because the people in
question either have experience but no time, or time but no experience.
Ultimately, the primary thing that makes or breaks the success of projects like
TomEE is our ability to convince people to contribute, then enable them to
contribute. That's difficult for many reasons, but I know it can be done.
There've been at least two times over the last 20+ years where I was the only
active person on the project and we've always managed to build a community of
new contributors again and keep the project going.
I've read your comments so far and I'd say you're definitely on the right track
and have a very high chance of success -- not just at fixing your issue, but
also at becoming a committer some day. I read a lot of tickets and most people
do not put in the kind of work you've put in. I can tell you have the kind of
personality that doesn't like to give up. As someone who has worked on the
project since 1999, I greatly respect that kind of mindset and appreciate its
rarity.
We'd be thrilled to see a PR from you if you feel up to giving it a try. The
few of us who do contribute are extremely aware of how intimidating it is, how
much bravery it takes, the knowledge gap involved and are always happy to help
mentor people through all parts of creating that first PR. It's actually not
that difficult provided people ask for help rather than staying quietly stuck.
But as I say, the fact that you've been chasing this for the better part of a
month (even over a holiday) and consistently posting your findings as you go is
an extremely good sign.
was (Author: dblevins):
Hi Thomas,
Don't count yourself out so easily, you're clearly doing great tracking all
this down. Yes, there are people who know the code more than you, but the
honest answer is there are not many of those people. For example, I wrote all
the first versions of the OpenEJB client code and remote protocol. It's barely
been changed, still holds up and really no one knows it better than me, period.
I still contribute, but I'm also the CEO of a company so I just don't have the
time to contribute as much as I'd like. The person who wrote all the BMP/CMP
code, added the liveHandleRegistry and related logic is Dain Sundstrom. Dain
co-founded another project called Trino (formerly Presto) and is now the CTO of
a 3.35 billion evaluation and hasn't worked on TomEE for quite a few years.
If we look at [contributions in the last 12
months|https://github.com/apache/tomee/graphs/contributors?from=2022-01-01&to=2023-01-03&type=c],
top of the list is Jean-Louis. He worked till 10pm his time today. Next one
down is Richard. Richard is a user like you and works for a university in
Germany that uses TomEE. He hasn't worked on any of the remote EJB or BMP code
and contributes in his spare time. After those two there's me (experience, but
no time). After that, contributions are quite low because the people in
question either have experience but no time, or time but no experience.
Ultimately, the primary thing that makes or breaks the success of projects like
TomEE is our ability to convince people to contribute, then enable them to
contribute. That's difficult for many reasons, but I know it can be done.
There've been at least two times over the last 20+ years where I was the only
active person on the project and we've always managed to build a community of
new contributors again and keep the project going.
I've read your comments so far and I'd say you're definitely on the right track
and have a very high chance of success -- not just at fixing your issue, but
also at becoming a committer some day. I read a lot of tickets and most people
do not put in the kind of work you've put in. I can tell you have the kind of
personality that doesn't like to give up. As someone who has worked on the
project since 1999, I greatly respect that kind of mindset and appreciate its
rarity.
We'd be thrilled to see a PR from you if you feel up to giving it a try. The
few of us who do contribute are extremely aware of how intimidating it is, how
much bravery it takes, the knowledge gap involved and are always happy to help
mentor people through all parts of creating that first PR. It's actually not
that difficult provided people ask for help rather than staying quietly stuck.
But as I say, the fact that you've been chasing this for the better part of a
month (even over a holiday) and consistently posting your findings as you go is
an extremely good sign.
> Remote EJB2 BMP Memory Leak
> ---------------------------
>
> Key: TOMEE-4120
> URL: https://issues.apache.org/jira/browse/TOMEE-4120
> Project: TomEE
> Issue Type: Bug
> Components: TomEE Core Server
> Affects Versions: 8.0.13
> Environment: I am using apache-tomee-plus-8.0.13 under windows 10 and
> jdk 8.
> Reporter: Thomas Lien
> Priority: Critical
> Attachments: mem1.png, mem2.png, mem3.png, memoryleak.png,
> test.ear.zip, testjar-src.zip
>
>
> I'm seeing a significant memory leak when loading ejb2 bmps remotely. I've
> found that any ejb2 bmp finder function has a leak on on the client side. The
> problem eventually causes our client application to crash with an out of
> memory error.
> Below is a simple main function I made to demonstrate. If I run this program
> below using a single ejb2 findByPrimaryKey call, memory will grow rapidly. I
> traced it down using the Eclipse Memory Profiler to the
> org.apache.openejb.client.EJBInvocationHandler class retaining memory in a
> ConcurrentHashMap field called liveHandleRegistry. I can see "BMPTestHome:1"
> as the key and a HashSet of WeakReferences as values. Attaching screenshot of
> the eclipse memory profiler which continues to grow the longer the program
> runs (memoryleak.png).
> {code:java}
> package test;
> import javax.naming.InitialContext;
> public class LookupMemTest {
> public static void main(String[] args) throws Exception {
> System.setProperty("java.naming.factory.initial",
> "org.apache.openejb.client.RemoteInitialContextFactory");
> System.setProperty("java.naming.provider.url",
> "http://127.0.0.1:8080/tomee/ejb");
> InitialContext ctx = new InitialContext();
> BMPTestHome bmpTestHome =
> (BMPTestHome)ctx.lookup("BMPTestHome");
> while (!Thread.currentThread().isInterrupted()) {
> bmpTestHome.findByPrimaryKey(new BMPTestPK(1));
> Thread.sleep(5);
> }
> }
> }
> {code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)