openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Patrick Linskey" <plins...@gmail.com>
Subject Re: svn commit: r561970 - in /openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa: enhance/PCRegistry.java util/ImplHelper.java
Date Thu, 02 Aug 2007 00:00:21 GMT
It would seem that we should be able to do something via EMF.close().
We'd probably want to do some sort of reference-counting to make sure
that we didn't unregister types that shouldn't be unregistered yet,
but it should be doable from there.

-Patrick

On 8/1/07, Kevin Sutter <kwsutter@gmail.com> wrote:
> Pinaki,
> The Embedder of OpenJPA would have to call this method (ie. Geronimo,
> WebSphere, WebLogic, etc).  Any application server that embeds OpenJPA may
> have to call this method if they run into this memory leak.  From the
> discussion on the dev mailing list, it sounds like this problem would be
> pervasive across all application servers.  Thus far, Geronimo is the only
> one that has reported the problem.
>
> I realize that this is not ideal with the Embedder calling back into OpenJPA
> to indicate that a classloader is no longer in service, but from the
> discussions, it didn't sound like any other solution was going to suffice.
> And, it sounded like from Don's last post on OPENJPA-285 that they were
> getting antsy for some type of resolution.  I figured that this change
> resolves the situation for now and if we come up with something better or
> more generic, then we can change it or add to it later.
>
> Kevin
>
> On 8/1/07, Pinaki Poddar <ppoddar@bea.com> wrote:
> >
> > Kevin,
> >    Who calls PCRegistry.deRegister(ClassLoader cl)?
> >
> >
> > Pinaki Poddar
> > 972.834.2865
> >
> > -----Original Message-----
> > From: kwsutter@apache.org [mailto:kwsutter@apache.org]
> > Sent: Wednesday, August 01, 2007 4:56 PM
> > To: commits@openjpa.apache.org
> > Subject: svn commit: r561970 - in
> > /openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa:
> > enhance/PCRegistry.java util/ImplHelper.java
> >
> > Author: kwsutter
> > Date: Wed Aug  1 14:55:44 2007
> > New Revision: 561970
> >
> > URL: http://svn.apache.org/viewvc?view=rev&rev=561970
> > Log:
> > OPENJPA-285.  I am going ahead with the integration of Kevan's patches
> > for the two memory leaks found in OpenJPA while testing Geronimo.  I
> > will post more details in the Issue.
> >
> > Modified:
> >
> > openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PC
> > Registry.java
> >
> > openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/util/ImplH
> > elper.java
> >
> > Modified:
> > openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PC
> > Registry.java
> > URL:
> > http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/
> > org/apache/openjpa/enhance/PCRegistry.java?view=diff&rev=561970&r1=56196
> > 9&r2=561970
> > ========================================================================
> > ======
> > ---
> > openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PC
> > Registry.java (original)
> > +++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/enhanc
> > +++ e/PCRegistry.java Wed Aug  1 14:55:44 2007
> > @@ -203,6 +203,23 @@
> >      }
> >
> >      /**
> > +     * De-Register all metadata associated with the given ClassLoader.
> > +     * Allows ClassLoaders to be garbage collected.
> > +     *
> > +     * @param cl the ClassLoader
> > +     */
> > +    public static void deRegister(ClassLoader cl) {
> > +        synchronized (_metas) {
> > +            for (Iterator i = _metas.keySet().iterator(); i.hasNext();)
> > {
> > +                Class pcClass = (Class) i.next();
> > +                if (pcClass.getClassLoader() == cl) {
> > +                    _metas.remove(pcClass);
> > +                }
> > +            }
> > +        }
> > +    }
> > +
> > +    /**
> >       * Returns a collection of class objects of the registered
> >       * persistence-capable classes.
> >       */
> >
> > Modified:
> > openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/util/ImplH
> > elper.java
> > URL:
> > http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/
> > org/apache/openjpa/util/ImplHelper.java?view=diff&rev=561970&r1=561969&r
> > 2=561970
> > ========================================================================
> > ======
> > ---
> > openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/util/ImplH
> > elper.java (original)
> > +++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/util/I
> > +++ mplHelper.java Wed Aug  1 14:55:44 2007
> > @@ -39,7 +39,6 @@
> > import org.apache.openjpa.lib.util.Closeable;
> > import org.apache.openjpa.lib.util.ReferenceMap;
> > import org.apache.openjpa.lib.util.UUIDGenerator;
> > -import org.apache.openjpa.lib.util.concurrent.ConcurrentHashMap;
> > import
> > org.apache.openjpa.lib.util.concurrent.ConcurrentReferenceHashMap;
> > import org.apache.openjpa.meta.ClassMetaData;
> > import org.apache.openjpa.meta.FieldMetaData;
> > @@ -244,7 +243,8 @@
> >          Boolean isAssignable = null;
> >          Map assignableTo = (Map) _assignableTypes.get(from);
> >          if (assignableTo == null) { // "to" cache doesn't exist, so
> > create it...
> > -            assignableTo = new ConcurrentHashMap();
> > +            assignableTo = new
> > ConcurrentReferenceHashMap(ReferenceMap.WEAK,
> > +                    ReferenceMap.HARD);
> >              _assignableTypes.put(from, assignableTo);
> >          } else { // "to" cache exists...
> >              isAssignable = (Boolean) assignableTo.get(to);
> >
> >
> >
> > Notice:  This email message, together with any attachments, may contain
> > information  of  BEA Systems,  Inc.,  its subsidiaries  and  affiliated
> > entities,  that may be confidential,  proprietary,  copyrighted  and/or
> > legally privileged, and is intended solely for the use of the individual or
> > entity named in this message. If you are not the intended recipient, and
> > have received this message in error, please immediately return this by email
> > and then delete it.
> >
>


-- 
Patrick Linskey
202 669 5907

Mime
View raw message