[jbossseam-issues] [JBoss JIRA] Commented: (JBSEAM-2803) In specific cases, a closed entitymanager is injected by seam, resulting in illegalstateexceptions

Indrek Altpere (JIRA) jira-events at lists.jboss.org
Tue Apr 1 04:11:07 EDT 2008


    [ http://jira.jboss.com/jira/browse/JBSEAM-2803?page=comments#action_12406087 ] 
            
Indrek Altpere commented on JBSEAM-2803:
----------------------------------------

You didn't answer my first question :P Is it meant to be like that ?
Keeping a reference to already closed em, thus letting it keep reference to other objects and in total, keeping bunch of memory non GC'able.

Results of a stress test (3 threads, total of 100 request per thread constantly bombing application):
Memory usage after stress test completed:
Em in PAGE scope without entityManager = null fix: 800MB+ memory usage
Em in PAGE scope with entityManager = null fix ~590MB memory usage
Em in EVENT scope without fix ~410M
Em in EVENT scope with fix ~410M

So, in some odd cases it causes closed em to stay around, throwin exceptions, PLUS memory leakage in amount of 110MB !!!!

Perhaps you could do some your side testing also to verify that the memory leakage is there before closing this thing off as "won't fix".

> In specific cases, a closed entitymanager is injected by seam, resulting in illegalstateexceptions
> --------------------------------------------------------------------------------------------------
>
>                 Key: JBSEAM-2803
>                 URL: http://jira.jboss.com/jira/browse/JBSEAM-2803
>             Project: JBoss Seam
>          Issue Type: Bug
>          Components: Framework
>    Affects Versions: 2.1.0.A1
>         Environment: Glassfish v2ur1, Icefaces 1.7.0
>            Reporter: Indrek Altpere
>   Original Estimate: 4 hours
>  Remaining Estimate: 4 hours
>
> EntityManager is put to event Scope for better memory usage and GC.
> Class that tries to use the entitymanager is itself in conversation scope, and this specific behavior occurs after icefaces file upload.
> Injected em is closed and throws IllegalStateException for every function used (as it should when it's closed).
> I dug around the persistence namespace/package and found once place that could explain it.
> src/main/org/jboss/seam/persistence/ManagedPersistenceContext.java
> line 225 to 229
>       if (entityManager!=null)
>       {
>          entityManager.close();
>       }
> As seen, entityManager is closed but since getEntityManager() function only creates new entitymanager when entityMAnager is null and does not check for entityManager being closed, the closed entitymanager gets passed around.
> I added entityManager = null; after the entityManager.close(); line so that the getEntityManager() would correctly return new entitymanager after old one was closed and recompiled the latest sources.
> It seemed to fix this issue, no more errors, em injected to the conversation scope class is not closed one anymore :)
> There may be some other things related to this like JBSEAM-2666 but I'm not entirely sure about it.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        



More information about the seam-issues mailing list