You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@openwebbeans.apache.org by Mark Struberg <st...@yahoo.de> on 2010/04/23 17:46:58 UTC

AW: svn commit: r937336 - in /openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans: component/ conversation/ el/ portable/creation/ spi/se/

please revert all the ThreadLocal.set(null) back to ThreadLocal.remove() because set(null) is known to produce memory leaks (That was actually the reason why remove() got introduced in jdk-1.5.

txs and LieGrue,
strub




----- Ursprüngliche Mail ----
> Von: "gerdogdu@apache.org" <ge...@apache.org>
> An: commits@openwebbeans.apache.org
> Gesendet: Freitag, den 23. April 2010, 17:32:56 Uhr
> Betreff: svn commit: r937336 - in /openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans: component/ conversation/ el/ portable/creation/ spi/se/
> 
> Author: gerdogdu
Date: Fri Apr 23 15:32:55 2010
New Revision: 
> 937336

URL: 
> target=_blank 
> >http://svn.apache.org/viewvc?rev=937336&view=rev
Log:
Update while 
> running sample applications.

Modified:
    
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java
  
>   
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionPointBean.java
  
>   
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java
  
>   
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationImpl.java
  
>   
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationManager.java
  
>   
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/el/WebBeansELResolver.java
  
>   
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/creation/InjectionTargetProducer.java
  
>   
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/spi/se/DefaultContextsService.java

Modified: 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java
URL: 
> 
> href="http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java?rev=937336&r1=937335&r2=937336&view=diff" 
> target=_blank 
> >http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java?rev=937336&r1=937335&r2=937336&view=diff
==============================================================================
--- 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java 
> (original)
+++ 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java 
> Fri Apr 23 15:32:55 2010
@@ -233,7 +233,7 @@ public abstract class 
> AbstractOwbBean<T>
            
> e.printStackTrace();
         }finally
    
>      {
-            
> CreationalContextImpl.currentRemoveObject.remove();
+      
>       
> CreationalContextImpl.currentRemoveObject.set(null);
      
>    }
     }


Modified: 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionPointBean.java
URL: 
> 
> href="http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionPointBean.java?rev=937336&r1=937335&r2=937336&view=diff" 
> target=_blank 
> >http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionPointBean.java?rev=937336&r1=937335&r2=937336&view=diff
==============================================================================
--- 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionPointBean.java 
> (original)
+++ 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionPointBean.java 
> Fri Apr 23 15:32:55 2010
@@ -46,7 +46,7 @@ public class InjectionPointBean 
> extends 
            
      
>    }finally
         {
-      
>       local.remove();
+          
>   local.set(null);
         }
    
> }


Modified: 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java
URL: 
> 
> href="http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java?rev=937336&r1=937335&r2=937336&view=diff" 
> target=_blank 
> >http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java?rev=937336&r1=937335&r2=937336&view=diff
==============================================================================
--- 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java 
> (original)
+++ 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java 
> Fri Apr 23 15:32:55 2010
@@ -263,7 +263,7 @@ public class 
> ProducerMethodBean<T> exten
            
> }
             else
      
>        {
-              
>   
> AbstractInjectable.dependentInstanceOfProducerMethods.remove();
+  
>               
> AbstractInjectable.dependentInstanceOfProducerMethods.set(null);
  
>            }
         }

> 

Modified: 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationImpl.java
URL: 
> 
> href="http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationImpl.java?rev=937336&r1=937335&r2=937336&view=diff" 
> target=_blank 
> >http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationImpl.java?rev=937336&r1=937335&r2=937336&view=diff
==============================================================================
--- 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationImpl.java 
> (original)
+++ 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationImpl.java 
> Fri Apr 23 15:32:55 2010
@@ -41,7 +41,7 @@ public class ConversationImpl 
> implements
     /**Transient or not. Transient conversations are 
> destroyed at the end of JSF request*/
     private boolean 
> isTransient = true;

-    /**Default timeout is 
> 3mins*/
+    /**Default timeout is 30mins*/
    
> private long timeout = 30 * 60 * 1000 ;

     /**Id of the 
> session that this conversation is created*/
@@ -61,6 +61,7 @@ public class 
> ConversationImpl implements
      */
     public 
> ConversationImpl()
     {
+        
> 
     }

     /**
@@ -72,7 +73,6 @@ public 
> class ConversationImpl implements
     {
      
>    Asserts.assertNotNull(sessionId);
        
> this.sessionId = sessionId;
-
     }
    
> 
     /**

Modified: 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationManager.java
URL: 
> 
> href="http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationManager.java?rev=937336&r1=937335&r2=937336&view=diff" 
> target=_blank 
> >http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationManager.java?rev=937336&r1=937335&r2=937336&view=diff
==============================================================================
--- 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationManager.java 
> (original)
+++ 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationManager.java 
> Fri Apr 23 15:32:55 2010
@@ -13,8 +13,8 @@
  */
package 
> org.apache.webbeans.conversation;

+import java.util.Collection;

> import java.util.Iterator;
-import java.util.Map;
import 
> java.util.Set;
import java.util.concurrent.ConcurrentHashMap;

@@ 
> -76,19 +76,16 @@ public class ConversationManager
      
> */
     public boolean isConversationExistWithGivenId(String 
> conversationId)
     {
-        synchronized 
> (conversations)
-        {
-      
>       ConversationImpl conv = null;
-      
>       Set<Conversation> set = 
> conversations.keySet();
-            
> Iterator<Conversation> it = set.iterator();
+      
>   ConversationImpl conv = null;
+        
> Set<Conversation> set = conversations.keySet();
+      
>   Iterator<Conversation> it = set.iterator();

-    
>         while (it.hasNext())
+        
> while (it.hasNext())
+        {
+      
>       conv = (ConversationImpl) it.next();
+    
>         if (conv.getId().equals(conversationId))
  
>            {
-          
>       conv = (ConversationImpl) it.next();
-    
>             if 
> (conv.getId().equals(conversationId))
-          
>       {
-              
>       return true;
-            
>     }
+                
> return true;
             }
    
>      }
        
@@ -210,6 +207,7 @@ public 
> class ConversationManager
              
>        {
              
>            ctx.destroy();
      
>                }
+
      
>                it.remove();
    
>              }
        
>      }
@@ -221,19 +219,16 @@ public class 
> ConversationManager
      */
     public void 
> destroyAllConversations()
     {
-        
> synchronized(conversations)
+        
> Collection<ConversationContext> collection = 
> this.conversations.values();
+        if(collection != 
> null && collection.size() > 0)
        
> {
-            if (conversations != 
> null)
+            for (ConversationContext 
> context : collection) 
            
> {
-                
> Map<Conversation, ConversationContext> oldConversations = 
> conversations;
-                
> conversations = new ConcurrentHashMap<Conversation, 
> ConversationContext>();
-              
>   
-                for 
> (ConversationContext ctx : oldConversations.values()) 
-      
>           {
-          
>           ctx.destroy();
-      
>           }
-          
>       conversations.clear();
-        
>     }
+                
> context.destroy();
+            }    
>         
         }
+    
>     
+        //Clear conversations
+  
>       conversations.clear();
     }

> }

Modified: 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/el/WebBeansELResolver.java
URL: 
> 
> href="http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/el/WebBeansELResolver.java?rev=937336&r1=937335&r2=937336&view=diff" 
> target=_blank 
> >http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/el/WebBeansELResolver.java?rev=937336&r1=937335&r2=937336&view=diff
==============================================================================
--- 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/el/WebBeansELResolver.java 
> (original)
+++ 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/el/WebBeansELResolver.java 
> Fri Apr 23 15:32:55 2010
@@ -99,7 +99,7 @@ public class WebBeansELResolver 
> extends 
                
> if(!oldContext.equals(context))
            
>      {
                
>      store.destroy();
-            
>         LOCAL_CONTEXT.remove();
+      
>               
> LOCAL_CONTEXT.set(null);
              
>    }
                
> else
                
> {

Modified: 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/creation/InjectionTargetProducer.java
URL: 
> 
> href="http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/creation/InjectionTargetProducer.java?rev=937336&r1=937335&r2=937336&view=diff" 
> target=_blank 
> >http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/creation/InjectionTargetProducer.java?rev=937336&r1=937335&r2=937336&view=diff
==============================================================================
--- 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/creation/InjectionTargetProducer.java 
> (original)
+++ 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/creation/InjectionTargetProducer.java 
> Fri Apr 23 15:32:55 2010
@@ -88,7 +88,7 @@ public class 
> InjectionTargetProducer<T> 
            
> }
             else
      
>        {
-              
>   AbstractInjectable.instanceUnderInjection.remove();
+    
>             
> AbstractInjectable.instanceUnderInjection.set(null);
      
>        }
         }
    
>     

Modified: 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/spi/se/DefaultContextsService.java
URL: 
> 
> href="http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/spi/se/DefaultContextsService.java?rev=937336&r1=937335&r2=937336&view=diff" 
> target=_blank 
> >http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/spi/se/DefaultContextsService.java?rev=937336&r1=937335&r2=937336&view=diff
==============================================================================
--- 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/spi/se/DefaultContextsService.java 
> (original)
+++ 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/spi/se/DefaultContextsService.java 
> Fri Apr 23 15:32:55 2010
@@ -211,12 +211,12 @@ public class 
> DefaultContextsService exte
     @Override
     public 
> void destroy(Object destroyObject)
     {
-      
>   requestContext.remove();
-        
> sessionContext.remove();
-        
> applicationContext.remove();
-        
> conversationContext.remove();
-        
> dependentContext.remove();
-        
> singletonContext.remove();
+        
> requestContext.set(null);
+        
> sessionContext.set(null);
+        
> applicationContext.set(null);
+        
> conversationContext.set(null);
+        
> dependentContext.set(null);
+        
> singletonContext.set(null);
     }
    
  
>   



Re: AW: AW: svn commit: r937336 - in /openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans: component/ conversation/ el/ portable/creation/ spi/se/

Posted by Gurkan Erdogdu <gu...@yahoo.com>.
>>Do you mean the warnings Mark Thomas built in in tomcat-6.0.25 which are meant as helpers to detect possible mem leaks and other programming 
>>errors? Maybe this is currently assumes jdk-1.4 only where the remove() 
didn't exist? 
Yes.

>>>maybe we should use set(null) and then remove()?
I did like this.

Thanks;

--Gurkan


________________________________
From: Mark Struberg <st...@yahoo.de>
To: dev@openwebbeans.apache.org
Sent: Sat, April 24, 2010 11:43:45 AM
Subject: AW: AW: svn commit: r937336 - in /openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans: component/ conversation/ el/ portable/creation/ spi/se/

Do you mean the warnings Mark Thomas built in in tomcat-6.0.25 which are meant as helpers to detect possible mem leaks and other programming errors? Maybe this is currently assumes jdk-1.4 only where the remove() didn't exist? 

The tip to use ThreadLocal#remove() instead ThreadLocal#set(null) is from what I remember back at the time jdk-1.5 got introduced and a few blogs from pretty good people:

http://crazybob.org/2006/07/hard-core-java-threadlocal.html
http://www.0xcafefeed.com/2004/06/of-non-static-threadlocals-and-memory/
http://mail-archives.apache.org/mod_mbox/tapestry-dev/200606.mbox/%3Cef28a20a0606130934v1620148dyb41decfca1378b5@mail.gmail.com%3E


maybe we should use set(null) and then remove()?
The cost for it should not be too high, but otoh I'd like to back this first with a unit test.

Or is any expert in this area around who can shed a light on this?


txs and LieGrue,
strub




----- Ursprüngliche Mail ----
> Von: Gurkan Erdogdu <gu...@yahoo.com>
> An: dev@openwebbeans.apache.org
> Gesendet: Freitag, den 23. April 2010, 18:50:29 Uhr
> Betreff: Re: AW: svn commit: r937336 - in /openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans: component/ conversation/ el/ portable/creation/ spi/se/
> 
> Mark,

I changed those to set(null) after that Tomcat stops to give 
> warnings, but not sure this is correct, so I will also add remove 
> methods.

Thanks;

--Gurkan


________________________________
From: 
> Gurkan Erdogdu <
> href="mailto:gurkanerdogdu@yahoo.com">gurkanerdogdu@yahoo.com>
To: 
> ymailto="mailto:dev@openwebbeans.apache.org" 
> href="mailto:dev@openwebbeans.apache.org">dev@openwebbeans.apache.org
Sent: 
> Fri, April 23, 2010 6:59:19 PM
Subject: Re: AW: svn commit: r937336 - in 
> /openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans: component/ 
> conversation/ el/ portable/creation/ spi/se/

Actually if you do not call 
> set(null) you are getting lots of memory leak, I have tried with Tomcat 6.26. 
> Actually non-of them provides clean memory leak because of GC algorithms 
> etc.  But If you really insist and ensure on this, you can 
> update

Thanks;



________________________________
From: 
> Mark Struberg <
> href="mailto:struberg@yahoo.de">struberg@yahoo.de>
To: 
> ymailto="mailto:dev@openwebbeans.apache.org" 
> href="mailto:dev@openwebbeans.apache.org">dev@openwebbeans.apache.org
Sent: 
> Fri, April 23, 2010 6:46:58 PM
Subject: AW: svn commit: r937336 - in 
> /openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans: component/ 
> conversation/ el/ portable/creation/ spi/se/

please revert all the 
> ThreadLocal.set(null) back to ThreadLocal.remove() because set(null) is known to 
> produce memory leaks (That was actually the reason why remove() got introduced 
> in jdk-1.5.

txs and LieGrue,
strub




----- 
> Ursprüngliche Mail ----
> Von: "
> href="mailto:gerdogdu@apache.org">gerdogdu@apache.org" <
> ymailto="mailto:gerdogdu@apache.org" 
> href="mailto:gerdogdu@apache.org">gerdogdu@apache.org>
> An: 
> ymailto="mailto:commits@openwebbeans.apache.org" 
> href="mailto:commits@openwebbeans.apache.org">commits@openwebbeans.apache.org
> 
> Gesendet: Freitag, den 23. April 2010, 17:32:56 Uhr
> Betreff: svn commit: 
> r937336 - in 
> /openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans: component/ 
> conversation/ el/ portable/creation/ spi/se/
> 
> Author: 
> gerdogdu
Date: Fri Apr 23 15:32:55 2010
New Revision: 
> 
> 937336

URL: 
> target=_blank 
> >
> href="http://svn.apache.org/viewvc?rev=937336&view=rev" target=_blank 
> >http://svn.apache.org/viewvc?rev=937336&view=rev
Log:
Update while 
> 
> running sample applications.

Modified:
    
> 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java
  
> 
>  
> 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionPointBean.java
  
> 
>  
> 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java
  
> 
>  
> 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationImpl.java
  
> 
>  
> 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationManager.java
  
> 
>  
> 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/el/WebBeansELResolver.java
  
> 
>  
> 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/creation/InjectionTargetProducer.java
  
> 
>  
> 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/spi/se/DefaultContextsService.java

Modified: 
> 
> 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java
URL: 
> 
> 
> href="
> href="http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java?rev=937336&r1=937335&r2=937336&view=diff" 
> target=_blank 
> >http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java?rev=937336&r1=937335&r2=937336&view=diff" 
> 
> target=_blank 
> >
> href="http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java?rev=937336&r1=937335&r2=937336&view=diff" 
> target=_blank 
> >http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java?rev=937336&r1=937335&r2=937336&view=diff
==============================================================================
--- 
> 
> 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java 
> 
> (original)
+++ 
> 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java 
> 
> Fri Apr 23 15:32:55 2010
@@ -233,7 +233,7 @@ public abstract class 
> 
> AbstractOwbBean<T>
            
> 
> e.printStackTrace();
         }finally
  
>  
>      {
-          
>  
> CreationalContextImpl.currentRemoveObject.remove();
+  
>    
>      
> 
> CreationalContextImpl.currentRemoveObject.set(null);
      
> 
>    }
     }


Modified: 
> 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionPointBean.java
URL: 
> 
> 
> href="
> href="http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionPointBean.java?rev=937336&r1=937335&r2=937336&view=diff" 
> target=_blank 
> >http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionPointBean.java?rev=937336&r1=937335&r2=937336&view=diff" 
> 
> target=_blank 
> >
> href="http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionPointBean.java?rev=937336&r1=937335&r2=937336&view=diff" 
> target=_blank 
> >http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionPointBean.java?rev=937336&r1=937335&r2=937336&view=diff
==============================================================================
--- 
> 
> 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionPointBean.java 
> 
> (original)
+++ 
> 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionPointBean.java 
> 
> Fri Apr 23 15:32:55 2010
@@ -46,7 +46,7 @@ public class 
> InjectionPointBean 
> extends 
          
>  
      
>    }finally
    
>      {
-      
>      
> local.remove();
+          
>  
> local.set(null);
         }
    
> 
> }


Modified: 
> 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java
URL: 
> 
> 
> href="
> href="http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java?rev=937336&r1=937335&r2=937336&view=diff" 
> target=_blank 
> >http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java?rev=937336&r1=937335&r2=937336&view=diff" 
> 
> target=_blank 
> >
> href="http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java?rev=937336&r1=937335&r2=937336&view=diff" 
> target=_blank 
> >http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java?rev=937336&r1=937335&r2=937336&view=diff
==============================================================================
--- 
> 
> 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java 
> 
> (original)
+++ 
> 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java 
> 
> Fri Apr 23 15:32:55 2010
@@ -263,7 +263,7 @@ public class 
> 
> ProducerMethodBean<T> exten
            
> 
> }
             else
    
>  
>        {
-        
>      
>  
> 
> AbstractInjectable.dependentInstanceOfProducerMethods.remove();
+  
> 
>              
> 
> AbstractInjectable.dependentInstanceOfProducerMethods.set(null);
  
> 
>            }
      
>    }

> 

Modified: 
> 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationImpl.java
URL: 
> 
> 
> href="
> href="http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationImpl.java?rev=937336&r1=937335&r2=937336&view=diff" 
> target=_blank 
> >http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationImpl.java?rev=937336&r1=937335&r2=937336&view=diff" 
> 
> target=_blank 
> >
> href="http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationImpl.java?rev=937336&r1=937335&r2=937336&view=diff" 
> target=_blank 
> >http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationImpl.java?rev=937336&r1=937335&r2=937336&view=diff
==============================================================================
--- 
> 
> 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationImpl.java 
> 
> (original)
+++ 
> 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationImpl.java 
> 
> Fri Apr 23 15:32:55 2010
@@ -41,7 +41,7 @@ public class 
> ConversationImpl 
> implements
     /**Transient or not. 
> Transient conversations are 
> destroyed at the end of JSF 
> request*/
     private boolean 
> isTransient = 
> true;

-    /**Default timeout is 
> 3mins*/
+  
>   /**Default timeout is 30mins*/
    
> private long 
> timeout = 30 * 60 * 1000 ;

     /**Id of the 
> session 
> that this conversation is created*/
@@ -61,6 +61,7 @@ public class 
> 
> ConversationImpl implements
      */
     public 
> 
> ConversationImpl()
     {
+        
> 
> 
     }

     /**
@@ -72,7 +73,6 @@ 
> public 
> class ConversationImpl implements
     {
  
>    
>    Asserts.assertNotNull(sessionId);
  
>      
> this.sessionId = sessionId;
-
    
> }
    
> 
     /**

Modified: 
> 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationManager.java
URL: 
> 
> 
> href="
> href="http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationManager.java?rev=937336&r1=937335&r2=937336&view=diff" 
> target=_blank 
> >http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationManager.java?rev=937336&r1=937335&r2=937336&view=diff" 
> 
> target=_blank 
> >
> href="http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationManager.java?rev=937336&r1=937335&r2=937336&view=diff" 
> target=_blank 
> >http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationManager.java?rev=937336&r1=937335&r2=937336&view=diff
==============================================================================
--- 
> 
> 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationManager.java 
> 
> (original)
+++ 
> 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationManager.java 
> 
> Fri Apr 23 15:32:55 2010
@@ -13,8 +13,8 @@
  */
package 
> 
> org.apache.webbeans.conversation;

+import 
> java.util.Collection;

> import java.util.Iterator;
-import 
> java.util.Map;
import 
> java.util.Set;
import 
> java.util.concurrent.ConcurrentHashMap;

@@ 
> -76,19 +76,16 @@ 
> public class ConversationManager
      
> */
  
>    public boolean isConversationExistWithGivenId(String 
> 
> conversationId)
     {
-        synchronized 
> 
> (conversations)
-        {
-    
>  
>       ConversationImpl conv = null;
-  
>    
>       Set<Conversation> set = 
> 
> conversations.keySet();
-            
> 
> Iterator<Conversation> it = set.iterator();
+    
>  
>   ConversationImpl conv = null;
+      
>  
> Set<Conversation> set = conversations.keySet();
+  
>    
>   Iterator<Conversation> it = 
> set.iterator();

-    
>         while 
> (it.hasNext())
+        
> while 
> (it.hasNext())
+        {
+      
> 
>       conv = (ConversationImpl) it.next();
+  
>  
>         if 
> (conv.getId().equals(conversationId))
  
>      
>       {
-          
>  
>      conv = (ConversationImpl) it.next();
-    
> 
>             if 
> 
> (conv.getId().equals(conversationId))
-          
> 
>       {
-            
>  
>       return true;
-      
>      
>     }
+        
>        
> return true;
        
>      }
    
>      }
  
>      
@@ -210,6 +207,7 @@ public 
> class 
> ConversationManager
              
> 
>        {
          
>    
>            
> ctx.destroy();
      
>        
>         }
+
      
>    
>             it.remove();
    
> 
>              }
    
>    
>      }
@@ -221,19 +219,16 @@ public 
> class 
> ConversationManager
      */
    
> public void 
> destroyAllConversations()
     {
-  
>      
> synchronized(conversations)
+    
>    
> Collection<ConversationContext> collection = 
> 
> this.conversations.values();
+        
> if(collection != 
> null && collection.size() > 0)
  
>      
> {
-            if 
> (conversations != 
> null)
+            
> for (ConversationContext 
> context : collection) 
      
>      
> {
-            
>    
> Map<Conversation, ConversationContext> 
> oldConversations = 
> conversations;
-        
>        
> conversations = new 
> ConcurrentHashMap<Conversation, 
> 
> ConversationContext>();
-              
> 
>  
-                for 
> 
> (ConversationContext ctx : oldConversations.values()) 
-  
>    
>           {
-    
>      
>          
> ctx.destroy();
-      
>        
>    }
-          
>      
> conversations.clear();
-        
>    
> }
+                
> 
> context.destroy();
+            }    
> 
>        
        
> }
+    
>    
+        
> //Clear conversations
+  
>      
> conversations.clear();
     }

> }

Modified: 
> 
> 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/el/WebBeansELResolver.java
URL: 
> 
> 
> href="
> href="http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/el/WebBeansELResolver.java?rev=937336&r1=937335&r2=937336&view=diff" 
> target=_blank 
> >http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/el/WebBeansELResolver.java?rev=937336&r1=937335&r2=937336&view=diff" 
> 
> target=_blank 
> >
> href="http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/el/WebBeansELResolver.java?rev=937336&r1=937335&r2=937336&view=diff" 
> target=_blank 
> >http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/el/WebBeansELResolver.java?rev=937336&r1=937335&r2=937336&view=diff
==============================================================================
--- 
> 
> 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/el/WebBeansELResolver.java 
> 
> (original)
+++ 
> 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/el/WebBeansELResolver.java 
> 
> Fri Apr 23 15:32:55 2010
@@ -99,7 +99,7 @@ public class 
> WebBeansELResolver 
> extends 
          
>      
> if(!oldContext.equals(context))
    
>        
>      {
    
>            
>      
> store.destroy();
-            
>  
>        LOCAL_CONTEXT.remove();
+      
> 
>              
> 
> LOCAL_CONTEXT.set(null);
              
> 
>    }
              
>  
> else
                
> 
> {

Modified: 
> 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/creation/InjectionTargetProducer.java
URL: 
> 
> 
> href="
> href="http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/creation/InjectionTargetProducer.java?rev=937336&r1=937335&r2=937336&view=diff" 
> target=_blank 
> >http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/creation/InjectionTargetProducer.java?rev=937336&r1=937335&r2=937336&view=diff" 
> 
> target=_blank 
> >
> href="http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/creation/InjectionTargetProducer.java?rev=937336&r1=937335&r2=937336&view=diff" 
> target=_blank 
> >http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/creation/InjectionTargetProducer.java?rev=937336&r1=937335&r2=937336&view=diff
==============================================================================
--- 
> 
> 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/creation/InjectionTargetProducer.java 
> 
> (original)
+++ 
> 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/creation/InjectionTargetProducer.java 
> 
> Fri Apr 23 15:32:55 2010
@@ -88,7 +88,7 @@ public class 
> 
> InjectionTargetProducer<T> 
            
> 
> }
             else
    
>  
>        {
-        
>      
>  
> AbstractInjectable.instanceUnderInjection.remove();
+    
> 
>            
> 
> AbstractInjectable.instanceUnderInjection.set(null);
      
> 
>        }
        
> }
    
>    

Modified: 
> 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/spi/se/DefaultContextsService.java
URL: 
> 
> 
> href="
> href="http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/spi/se/DefaultContextsService.java?rev=937336&r1=937335&r2=937336&view=diff" 
> target=_blank 
> >http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/spi/se/DefaultContextsService.java?rev=937336&r1=937335&r2=937336&view=diff" 
> 
> target=_blank 
> >
> href="http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/spi/se/DefaultContextsService.java?rev=937336&r1=937335&r2=937336&view=diff" 
> target=_blank 
> >http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/spi/se/DefaultContextsService.java?rev=937336&r1=937335&r2=937336&view=diff
==============================================================================
--- 
> 
> 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/spi/se/DefaultContextsService.java 
> 
> (original)
+++ 
> 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/spi/se/DefaultContextsService.java 
> 
> Fri Apr 23 15:32:55 2010
@@ -211,12 +211,12 @@ public class 
> 
> DefaultContextsService exte
     @Override
     public 
> 
> void destroy(Object destroyObject)
     {
-  
>    
>   requestContext.remove();
-      
>  
> sessionContext.remove();
-        
> 
> applicationContext.remove();
-        
> 
> conversationContext.remove();
-        
> 
> dependentContext.remove();
-        
> 
> singletonContext.remove();
+        
> 
> requestContext.set(null);
+        
> 
> sessionContext.set(null);
+        
> 
> applicationContext.set(null);
+        
> 
> conversationContext.set(null);
+        
> 
> dependentContext.set(null);
+        
> 
> singletonContext.set(null);
     }
    
  
> 
>  


AW: AW: svn commit: r937336 - in /openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans: component/ conversation/ el/ portable/creation/ spi/se/

Posted by Mark Struberg <st...@yahoo.de>.
Do you mean the warnings Mark Thomas built in in tomcat-6.0.25 which are meant as helpers to detect possible mem leaks and other programming errors? Maybe this is currently assumes jdk-1.4 only where the remove() didn't exist? 

The tip to use ThreadLocal#remove() instead ThreadLocal#set(null) is from what I remember back at the time jdk-1.5 got introduced and a few blogs from pretty good people:

http://crazybob.org/2006/07/hard-core-java-threadlocal.html
http://www.0xcafefeed.com/2004/06/of-non-static-threadlocals-and-memory/
http://mail-archives.apache.org/mod_mbox/tapestry-dev/200606.mbox/%3Cef28a20a0606130934v1620148dyb41decfca1378b5@mail.gmail.com%3E


maybe we should use set(null) and then remove()?
The cost for it should not be too high, but otoh I'd like to back this first with a unit test.

Or is any expert in this area around who can shed a light on this?


txs and LieGrue,
strub




----- Ursprüngliche Mail ----
> Von: Gurkan Erdogdu <gu...@yahoo.com>
> An: dev@openwebbeans.apache.org
> Gesendet: Freitag, den 23. April 2010, 18:50:29 Uhr
> Betreff: Re: AW: svn commit: r937336 - in /openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans: component/ conversation/ el/ portable/creation/ spi/se/
> 
> Mark,

I changed those to set(null) after that Tomcat stops to give 
> warnings, but not sure this is correct, so I will also add remove 
> methods.

Thanks;

--Gurkan


________________________________
From: 
> Gurkan Erdogdu <
> href="mailto:gurkanerdogdu@yahoo.com">gurkanerdogdu@yahoo.com>
To: 
> ymailto="mailto:dev@openwebbeans.apache.org" 
> href="mailto:dev@openwebbeans.apache.org">dev@openwebbeans.apache.org
Sent: 
> Fri, April 23, 2010 6:59:19 PM
Subject: Re: AW: svn commit: r937336 - in 
> /openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans: component/ 
> conversation/ el/ portable/creation/ spi/se/

Actually if you do not call 
> set(null) you are getting lots of memory leak, I have tried with Tomcat 6.26. 
> Actually non-of them provides clean memory leak because of GC algorithms 
> etc.  But If you really insist and ensure on this, you can 
> update

Thanks;



________________________________
From: 
> Mark Struberg <
> href="mailto:struberg@yahoo.de">struberg@yahoo.de>
To: 
> ymailto="mailto:dev@openwebbeans.apache.org" 
> href="mailto:dev@openwebbeans.apache.org">dev@openwebbeans.apache.org
Sent: 
> Fri, April 23, 2010 6:46:58 PM
Subject: AW: svn commit: r937336 - in 
> /openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans: component/ 
> conversation/ el/ portable/creation/ spi/se/

please revert all the 
> ThreadLocal.set(null) back to ThreadLocal.remove() because set(null) is known to 
> produce memory leaks (That was actually the reason why remove() got introduced 
> in jdk-1.5.

txs and LieGrue,
strub




----- 
> Ursprüngliche Mail ----
> Von: "
> href="mailto:gerdogdu@apache.org">gerdogdu@apache.org" <
> ymailto="mailto:gerdogdu@apache.org" 
> href="mailto:gerdogdu@apache.org">gerdogdu@apache.org>
> An: 
> ymailto="mailto:commits@openwebbeans.apache.org" 
> href="mailto:commits@openwebbeans.apache.org">commits@openwebbeans.apache.org
> 
> Gesendet: Freitag, den 23. April 2010, 17:32:56 Uhr
> Betreff: svn commit: 
> r937336 - in 
> /openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans: component/ 
> conversation/ el/ portable/creation/ spi/se/
> 
> Author: 
> gerdogdu
Date: Fri Apr 23 15:32:55 2010
New Revision: 
> 
> 937336

URL: 
> target=_blank 
> >
> href="http://svn.apache.org/viewvc?rev=937336&view=rev" target=_blank 
> >http://svn.apache.org/viewvc?rev=937336&view=rev
Log:
Update while 
> 
> running sample applications.

Modified:
    
> 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java
  
> 
>  
> 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionPointBean.java
  
> 
>  
> 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java
  
> 
>  
> 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationImpl.java
  
> 
>  
> 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationManager.java
  
> 
>  
> 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/el/WebBeansELResolver.java
  
> 
>  
> 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/creation/InjectionTargetProducer.java
  
> 
>  
> 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/spi/se/DefaultContextsService.java

Modified: 
> 
> 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java
URL: 
> 
> 
> href="
> href="http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java?rev=937336&r1=937335&r2=937336&view=diff" 
> target=_blank 
> >http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java?rev=937336&r1=937335&r2=937336&view=diff" 
> 
> target=_blank 
> >
> href="http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java?rev=937336&r1=937335&r2=937336&view=diff" 
> target=_blank 
> >http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java?rev=937336&r1=937335&r2=937336&view=diff
==============================================================================
--- 
> 
> 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java 
> 
> (original)
+++ 
> 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java 
> 
> Fri Apr 23 15:32:55 2010
@@ -233,7 +233,7 @@ public abstract class 
> 
> AbstractOwbBean<T>
            
> 
> e.printStackTrace();
         }finally
  
>   
>      {
-          
>   
> CreationalContextImpl.currentRemoveObject.remove();
+  
>     
>      
> 
> CreationalContextImpl.currentRemoveObject.set(null);
      
> 
>    }
     }


Modified: 
> 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionPointBean.java
URL: 
> 
> 
> href="
> href="http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionPointBean.java?rev=937336&r1=937335&r2=937336&view=diff" 
> target=_blank 
> >http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionPointBean.java?rev=937336&r1=937335&r2=937336&view=diff" 
> 
> target=_blank 
> >
> href="http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionPointBean.java?rev=937336&r1=937335&r2=937336&view=diff" 
> target=_blank 
> >http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionPointBean.java?rev=937336&r1=937335&r2=937336&view=diff
==============================================================================
--- 
> 
> 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionPointBean.java 
> 
> (original)
+++ 
> 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionPointBean.java 
> 
> Fri Apr 23 15:32:55 2010
@@ -46,7 +46,7 @@ public class 
> InjectionPointBean 
> extends 
          
>   
      
>    }finally
    
>      {
-      
>      
> local.remove();
+          
>  
> local.set(null);
         }
    
> 
> }


Modified: 
> 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java
URL: 
> 
> 
> href="
> href="http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java?rev=937336&r1=937335&r2=937336&view=diff" 
> target=_blank 
> >http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java?rev=937336&r1=937335&r2=937336&view=diff" 
> 
> target=_blank 
> >
> href="http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java?rev=937336&r1=937335&r2=937336&view=diff" 
> target=_blank 
> >http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java?rev=937336&r1=937335&r2=937336&view=diff
==============================================================================
--- 
> 
> 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java 
> 
> (original)
+++ 
> 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java 
> 
> Fri Apr 23 15:32:55 2010
@@ -263,7 +263,7 @@ public class 
> 
> ProducerMethodBean<T> exten
            
> 
> }
             else
    
>   
>        {
-        
>       
>  
> 
> AbstractInjectable.dependentInstanceOfProducerMethods.remove();
+  
> 
>              
> 
> AbstractInjectable.dependentInstanceOfProducerMethods.set(null);
  
> 
>            }
      
>    }

> 

Modified: 
> 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationImpl.java
URL: 
> 
> 
> href="
> href="http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationImpl.java?rev=937336&r1=937335&r2=937336&view=diff" 
> target=_blank 
> >http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationImpl.java?rev=937336&r1=937335&r2=937336&view=diff" 
> 
> target=_blank 
> >
> href="http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationImpl.java?rev=937336&r1=937335&r2=937336&view=diff" 
> target=_blank 
> >http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationImpl.java?rev=937336&r1=937335&r2=937336&view=diff
==============================================================================
--- 
> 
> 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationImpl.java 
> 
> (original)
+++ 
> 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationImpl.java 
> 
> Fri Apr 23 15:32:55 2010
@@ -41,7 +41,7 @@ public class 
> ConversationImpl 
> implements
     /**Transient or not. 
> Transient conversations are 
> destroyed at the end of JSF 
> request*/
     private boolean 
> isTransient = 
> true;

-    /**Default timeout is 
> 3mins*/
+  
>   /**Default timeout is 30mins*/
    
> private long 
> timeout = 30 * 60 * 1000 ;

     /**Id of the 
> session 
> that this conversation is created*/
@@ -61,6 +61,7 @@ public class 
> 
> ConversationImpl implements
      */
     public 
> 
> ConversationImpl()
     {
+        
> 
> 
     }

     /**
@@ -72,7 +73,6 @@ 
> public 
> class ConversationImpl implements
     {
  
>     
>    Asserts.assertNotNull(sessionId);
  
>       
> this.sessionId = sessionId;
-
    
> }
    
> 
     /**

Modified: 
> 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationManager.java
URL: 
> 
> 
> href="
> href="http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationManager.java?rev=937336&r1=937335&r2=937336&view=diff" 
> target=_blank 
> >http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationManager.java?rev=937336&r1=937335&r2=937336&view=diff" 
> 
> target=_blank 
> >
> href="http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationManager.java?rev=937336&r1=937335&r2=937336&view=diff" 
> target=_blank 
> >http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationManager.java?rev=937336&r1=937335&r2=937336&view=diff
==============================================================================
--- 
> 
> 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationManager.java 
> 
> (original)
+++ 
> 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationManager.java 
> 
> Fri Apr 23 15:32:55 2010
@@ -13,8 +13,8 @@
  */
package 
> 
> org.apache.webbeans.conversation;

+import 
> java.util.Collection;

> import java.util.Iterator;
-import 
> java.util.Map;
import 
> java.util.Set;
import 
> java.util.concurrent.ConcurrentHashMap;

@@ 
> -76,19 +76,16 @@ 
> public class ConversationManager
      
> */
  
>    public boolean isConversationExistWithGivenId(String 
> 
> conversationId)
     {
-        synchronized 
> 
> (conversations)
-        {
-    
>   
>       ConversationImpl conv = null;
-  
>     
>       Set<Conversation> set = 
> 
> conversations.keySet();
-            
> 
> Iterator<Conversation> it = set.iterator();
+    
>   
>   ConversationImpl conv = null;
+      
>   
> Set<Conversation> set = conversations.keySet();
+  
>     
>   Iterator<Conversation> it = 
> set.iterator();

-    
>         while 
> (it.hasNext())
+        
> while 
> (it.hasNext())
+        {
+      
> 
>       conv = (ConversationImpl) it.next();
+  
>   
>         if 
> (conv.getId().equals(conversationId))
  
>      
>       {
-          
>  
>      conv = (ConversationImpl) it.next();
-    
> 
>             if 
> 
> (conv.getId().equals(conversationId))
-          
> 
>       {
-            
>   
>       return true;
-      
>       
>     }
+        
>         
> return true;
        
>      }
    
>      }
  
>       
@@ -210,6 +207,7 @@ public 
> class 
> ConversationManager
              
> 
>        {
          
>     
>            
> ctx.destroy();
      
>        
>         }
+
      
>    
>             it.remove();
    
> 
>              }
    
>     
>      }
@@ -221,19 +219,16 @@ public 
> class 
> ConversationManager
      */
    
> public void 
> destroyAllConversations()
     {
-  
>       
> synchronized(conversations)
+    
>     
> Collection<ConversationContext> collection = 
> 
> this.conversations.values();
+        
> if(collection != 
> null && collection.size() > 0)
  
>       
> {
-            if 
> (conversations != 
> null)
+            
> for (ConversationContext 
> context : collection) 
      
>       
> {
-            
>     
> Map<Conversation, ConversationContext> 
> oldConversations = 
> conversations;
-        
>         
> conversations = new 
> ConcurrentHashMap<Conversation, 
> 
> ConversationContext>();
-              
> 
>  
-                for 
> 
> (ConversationContext ctx : oldConversations.values()) 
-  
>     
>           {
-    
>       
>          
> ctx.destroy();
-      
>        
>    }
-          
>      
> conversations.clear();
-        
>    
> }
+                
> 
> context.destroy();
+            }    
> 
>        
        
> }
+    
>    
+        
> //Clear conversations
+  
>      
> conversations.clear();
     }

> }

Modified: 
> 
> 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/el/WebBeansELResolver.java
URL: 
> 
> 
> href="
> href="http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/el/WebBeansELResolver.java?rev=937336&r1=937335&r2=937336&view=diff" 
> target=_blank 
> >http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/el/WebBeansELResolver.java?rev=937336&r1=937335&r2=937336&view=diff" 
> 
> target=_blank 
> >
> href="http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/el/WebBeansELResolver.java?rev=937336&r1=937335&r2=937336&view=diff" 
> target=_blank 
> >http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/el/WebBeansELResolver.java?rev=937336&r1=937335&r2=937336&view=diff
==============================================================================
--- 
> 
> 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/el/WebBeansELResolver.java 
> 
> (original)
+++ 
> 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/el/WebBeansELResolver.java 
> 
> Fri Apr 23 15:32:55 2010
@@ -99,7 +99,7 @@ public class 
> WebBeansELResolver 
> extends 
          
>       
> if(!oldContext.equals(context))
    
>         
>      {
    
>             
>      
> store.destroy();
-            
>  
>        LOCAL_CONTEXT.remove();
+      
> 
>              
> 
> LOCAL_CONTEXT.set(null);
              
> 
>    }
              
>   
> else
                
> 
> {

Modified: 
> 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/creation/InjectionTargetProducer.java
URL: 
> 
> 
> href="
> href="http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/creation/InjectionTargetProducer.java?rev=937336&r1=937335&r2=937336&view=diff" 
> target=_blank 
> >http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/creation/InjectionTargetProducer.java?rev=937336&r1=937335&r2=937336&view=diff" 
> 
> target=_blank 
> >
> href="http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/creation/InjectionTargetProducer.java?rev=937336&r1=937335&r2=937336&view=diff" 
> target=_blank 
> >http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/creation/InjectionTargetProducer.java?rev=937336&r1=937335&r2=937336&view=diff
==============================================================================
--- 
> 
> 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/creation/InjectionTargetProducer.java 
> 
> (original)
+++ 
> 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/creation/InjectionTargetProducer.java 
> 
> Fri Apr 23 15:32:55 2010
@@ -88,7 +88,7 @@ public class 
> 
> InjectionTargetProducer<T> 
            
> 
> }
             else
    
>   
>        {
-        
>       
>  
> AbstractInjectable.instanceUnderInjection.remove();
+    
> 
>            
> 
> AbstractInjectable.instanceUnderInjection.set(null);
      
> 
>        }
        
> }
    
>    

Modified: 
> 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/spi/se/DefaultContextsService.java
URL: 
> 
> 
> href="
> href="http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/spi/se/DefaultContextsService.java?rev=937336&r1=937335&r2=937336&view=diff" 
> target=_blank 
> >http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/spi/se/DefaultContextsService.java?rev=937336&r1=937335&r2=937336&view=diff" 
> 
> target=_blank 
> >
> href="http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/spi/se/DefaultContextsService.java?rev=937336&r1=937335&r2=937336&view=diff" 
> target=_blank 
> >http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/spi/se/DefaultContextsService.java?rev=937336&r1=937335&r2=937336&view=diff
==============================================================================
--- 
> 
> 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/spi/se/DefaultContextsService.java 
> 
> (original)
+++ 
> 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/spi/se/DefaultContextsService.java 
> 
> Fri Apr 23 15:32:55 2010
@@ -211,12 +211,12 @@ public class 
> 
> DefaultContextsService exte
     @Override
     public 
> 
> void destroy(Object destroyObject)
     {
-  
>     
>   requestContext.remove();
-      
>   
> sessionContext.remove();
-        
> 
> applicationContext.remove();
-        
> 
> conversationContext.remove();
-        
> 
> dependentContext.remove();
-        
> 
> singletonContext.remove();
+        
> 
> requestContext.set(null);
+        
> 
> sessionContext.set(null);
+        
> 
> applicationContext.set(null);
+        
> 
> conversationContext.set(null);
+        
> 
> dependentContext.set(null);
+        
> 
> singletonContext.set(null);
     }
    
  
> 
>  



Re: AW: svn commit: r937336 - in /openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans: component/ conversation/ el/ portable/creation/ spi/se/

Posted by Gurkan Erdogdu <gu...@yahoo.com>.
Mark,

I changed those to set(null) after that Tomcat stops to give warnings, but not sure this is correct, so I will also add remove methods.

Thanks;

--Gurkan


________________________________
From: Gurkan Erdogdu <gu...@yahoo.com>
To: dev@openwebbeans.apache.org
Sent: Fri, April 23, 2010 6:59:19 PM
Subject: Re: AW: svn commit: r937336 - in /openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans: component/ conversation/ el/ portable/creation/ spi/se/

Actually if you do not call set(null) you are getting lots of memory leak, I have tried with Tomcat 6.26. Actually non-of them provides clean memory leak because of GC algorithms etc.  But If you really insist and ensure on this, you can update

Thanks;



________________________________
From: Mark Struberg <st...@yahoo.de>
To: dev@openwebbeans.apache.org
Sent: Fri, April 23, 2010 6:46:58 PM
Subject: AW: svn commit: r937336 - in /openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans: component/ conversation/ el/ portable/creation/ spi/se/

please revert all the ThreadLocal.set(null) back to ThreadLocal.remove() because set(null) is known to produce memory leaks (That was actually the reason why remove() got introduced in jdk-1.5.

txs and LieGrue,
strub




----- Ursprüngliche Mail ----
> Von: "gerdogdu@apache.org" <ge...@apache.org>
> An: commits@openwebbeans.apache.org
> Gesendet: Freitag, den 23. April 2010, 17:32:56 Uhr
> Betreff: svn commit: r937336 - in /openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans: component/ conversation/ el/ portable/creation/ spi/se/
> 
> Author: gerdogdu
Date: Fri Apr 23 15:32:55 2010
New Revision: 
> 937336

URL: 
> target=_blank 
> >http://svn.apache.org/viewvc?rev=937336&view=rev
Log:
Update while 
> running sample applications.

Modified:
    
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java
  
>  
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionPointBean.java
  
>  
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java
  
>  
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationImpl.java
  
>  
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationManager.java
  
>  
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/el/WebBeansELResolver.java
  
>  
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/creation/InjectionTargetProducer.java
  
>  
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/spi/se/DefaultContextsService.java

Modified: 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java
URL: 
> 
> href="http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java?rev=937336&r1=937335&r2=937336&view=diff" 
> target=_blank 
> >http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java?rev=937336&r1=937335&r2=937336&view=diff
==============================================================================
--- 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java 
> (original)
+++ 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java 
> Fri Apr 23 15:32:55 2010
@@ -233,7 +233,7 @@ public abstract class 
> AbstractOwbBean<T>
            
> e.printStackTrace();
         }finally
    
>      {
-            
> CreationalContextImpl.currentRemoveObject.remove();
+      
>      
> CreationalContextImpl.currentRemoveObject.set(null);
      
>    }
     }


Modified: 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionPointBean.java
URL: 
> 
> href="http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionPointBean.java?rev=937336&r1=937335&r2=937336&view=diff" 
> target=_blank 
> >http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionPointBean.java?rev=937336&r1=937335&r2=937336&view=diff
==============================================================================
--- 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionPointBean.java 
> (original)
+++ 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionPointBean.java 
> Fri Apr 23 15:32:55 2010
@@ -46,7 +46,7 @@ public class InjectionPointBean 
> extends 
            
      
>    }finally
         {
-      
>       local.remove();
+          
>   local.set(null);
         }
    
> }


Modified: 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java
URL: 
> 
> href="http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java?rev=937336&r1=937335&r2=937336&view=diff" 
> target=_blank 
> >http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java?rev=937336&r1=937335&r2=937336&view=diff
==============================================================================
--- 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java 
> (original)
+++ 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java 
> Fri Apr 23 15:32:55 2010
@@ -263,7 +263,7 @@ public class 
> ProducerMethodBean<T> exten
            
> }
             else
      
>        {
-              
>  
> AbstractInjectable.dependentInstanceOfProducerMethods.remove();
+  
>              
> AbstractInjectable.dependentInstanceOfProducerMethods.set(null);
  
>            }
         }

> 

Modified: 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationImpl.java
URL: 
> 
> href="http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationImpl.java?rev=937336&r1=937335&r2=937336&view=diff" 
> target=_blank 
> >http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationImpl.java?rev=937336&r1=937335&r2=937336&view=diff
==============================================================================
--- 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationImpl.java 
> (original)
+++ 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationImpl.java 
> Fri Apr 23 15:32:55 2010
@@ -41,7 +41,7 @@ public class ConversationImpl 
> implements
     /**Transient or not. Transient conversations are 
> destroyed at the end of JSF request*/
     private boolean 
> isTransient = true;

-    /**Default timeout is 
> 3mins*/
+    /**Default timeout is 30mins*/
    
> private long timeout = 30 * 60 * 1000 ;

     /**Id of the 
> session that this conversation is created*/
@@ -61,6 +61,7 @@ public class 
> ConversationImpl implements
      */
     public 
> ConversationImpl()
     {
+        
> 
     }

     /**
@@ -72,7 +73,6 @@ public 
> class ConversationImpl implements
     {
      
>    Asserts.assertNotNull(sessionId);
        
> this.sessionId = sessionId;
-
     }
    
> 
     /**

Modified: 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationManager.java
URL: 
> 
> href="http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationManager.java?rev=937336&r1=937335&r2=937336&view=diff" 
> target=_blank 
> >http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationManager.java?rev=937336&r1=937335&r2=937336&view=diff
==============================================================================
--- 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationManager.java 
> (original)
+++ 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationManager.java 
> Fri Apr 23 15:32:55 2010
@@ -13,8 +13,8 @@
  */
package 
> org.apache.webbeans.conversation;

+import java.util.Collection;

> import java.util.Iterator;
-import java.util.Map;
import 
> java.util.Set;
import java.util.concurrent.ConcurrentHashMap;

@@ 
> -76,19 +76,16 @@ public class ConversationManager
      
> */
     public boolean isConversationExistWithGivenId(String 
> conversationId)
     {
-        synchronized 
> (conversations)
-        {
-      
>       ConversationImpl conv = null;
-      
>       Set<Conversation> set = 
> conversations.keySet();
-            
> Iterator<Conversation> it = set.iterator();
+      
>   ConversationImpl conv = null;
+        
> Set<Conversation> set = conversations.keySet();
+      
>   Iterator<Conversation> it = set.iterator();

-    
>         while (it.hasNext())
+        
> while (it.hasNext())
+        {
+      
>       conv = (ConversationImpl) it.next();
+    
>         if (conv.getId().equals(conversationId))
  
>            {
-          
>       conv = (ConversationImpl) it.next();
-    
>             if 
> (conv.getId().equals(conversationId))
-          
>       {
-              
>       return true;
-            
>     }
+                
> return true;
             }
    
>      }
        
@@ -210,6 +207,7 @@ public 
> class ConversationManager
              
>        {
              
>            ctx.destroy();
      
>                }
+
      
>                it.remove();
    
>              }
        
>      }
@@ -221,19 +219,16 @@ public class 
> ConversationManager
      */
     public void 
> destroyAllConversations()
     {
-        
> synchronized(conversations)
+        
> Collection<ConversationContext> collection = 
> this.conversations.values();
+        if(collection != 
> null && collection.size() > 0)
        
> {
-            if (conversations != 
> null)
+            for (ConversationContext 
> context : collection) 
            
> {
-                
> Map<Conversation, ConversationContext> oldConversations = 
> conversations;
-                
> conversations = new ConcurrentHashMap<Conversation, 
> ConversationContext>();
-              
>  
-                for 
> (ConversationContext ctx : oldConversations.values()) 
-      
>           {
-          
>           ctx.destroy();
-      
>           }
-          
>       conversations.clear();
-        
>     }
+                
> context.destroy();
+            }    
>        
         }
+    
>    
+        //Clear conversations
+  
>       conversations.clear();
     }

> }

Modified: 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/el/WebBeansELResolver.java
URL: 
> 
> href="http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/el/WebBeansELResolver.java?rev=937336&r1=937335&r2=937336&view=diff" 
> target=_blank 
> >http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/el/WebBeansELResolver.java?rev=937336&r1=937335&r2=937336&view=diff
==============================================================================
--- 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/el/WebBeansELResolver.java 
> (original)
+++ 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/el/WebBeansELResolver.java 
> Fri Apr 23 15:32:55 2010
@@ -99,7 +99,7 @@ public class WebBeansELResolver 
> extends 
                
> if(!oldContext.equals(context))
            
>      {
                
>      store.destroy();
-            
>         LOCAL_CONTEXT.remove();
+      
>              
> LOCAL_CONTEXT.set(null);
              
>    }
                
> else
                
> {

Modified: 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/creation/InjectionTargetProducer.java
URL: 
> 
> href="http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/creation/InjectionTargetProducer.java?rev=937336&r1=937335&r2=937336&view=diff" 
> target=_blank 
> >http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/creation/InjectionTargetProducer.java?rev=937336&r1=937335&r2=937336&view=diff
==============================================================================
--- 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/creation/InjectionTargetProducer.java 
> (original)
+++ 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/creation/InjectionTargetProducer.java 
> Fri Apr 23 15:32:55 2010
@@ -88,7 +88,7 @@ public class 
> InjectionTargetProducer<T> 
            
> }
             else
      
>        {
-              
>   AbstractInjectable.instanceUnderInjection.remove();
+    
>            
> AbstractInjectable.instanceUnderInjection.set(null);
      
>        }
         }
    
>    

Modified: 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/spi/se/DefaultContextsService.java
URL: 
> 
> href="http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/spi/se/DefaultContextsService.java?rev=937336&r1=937335&r2=937336&view=diff" 
> target=_blank 
> >http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/spi/se/DefaultContextsService.java?rev=937336&r1=937335&r2=937336&view=diff
==============================================================================
--- 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/spi/se/DefaultContextsService.java 
> (original)
+++ 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/spi/se/DefaultContextsService.java 
> Fri Apr 23 15:32:55 2010
@@ -211,12 +211,12 @@ public class 
> DefaultContextsService exte
     @Override
     public 
> void destroy(Object destroyObject)
     {
-      
>   requestContext.remove();
-        
> sessionContext.remove();
-        
> applicationContext.remove();
-        
> conversationContext.remove();
-        
> dependentContext.remove();
-        
> singletonContext.remove();
+        
> requestContext.set(null);
+        
> sessionContext.set(null);
+        
> applicationContext.set(null);
+        
> conversationContext.set(null);
+        
> dependentContext.set(null);
+        
> singletonContext.set(null);
     }
    
  
>  


Re: AW: svn commit: r937336 - in /openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans: component/ conversation/ el/ portable/creation/ spi/se/

Posted by Gurkan Erdogdu <gu...@yahoo.com>.
Actually if you do not call set(null) you are getting lots of memory leak, I have tried with Tomcat 6.26. Actually non-of them provides clean memory leak because of GC algorithms etc.  But If you really insist and ensure on this, you can update

Thanks;



________________________________
From: Mark Struberg <st...@yahoo.de>
To: dev@openwebbeans.apache.org
Sent: Fri, April 23, 2010 6:46:58 PM
Subject: AW: svn commit: r937336 - in /openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans: component/ conversation/ el/ portable/creation/ spi/se/

please revert all the ThreadLocal.set(null) back to ThreadLocal.remove() because set(null) is known to produce memory leaks (That was actually the reason why remove() got introduced in jdk-1.5.

txs and LieGrue,
strub




----- Ursprüngliche Mail ----
> Von: "gerdogdu@apache.org" <ge...@apache.org>
> An: commits@openwebbeans.apache.org
> Gesendet: Freitag, den 23. April 2010, 17:32:56 Uhr
> Betreff: svn commit: r937336 - in /openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans: component/ conversation/ el/ portable/creation/ spi/se/
> 
> Author: gerdogdu
Date: Fri Apr 23 15:32:55 2010
New Revision: 
> 937336

URL: 
> target=_blank 
> >http://svn.apache.org/viewvc?rev=937336&view=rev
Log:
Update while 
> running sample applications.

Modified:
    
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java
  
>  
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionPointBean.java
  
>  
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java
  
>  
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationImpl.java
  
>  
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationManager.java
  
>  
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/el/WebBeansELResolver.java
  
>  
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/creation/InjectionTargetProducer.java
  
>  
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/spi/se/DefaultContextsService.java

Modified: 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java
URL: 
> 
> href="http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java?rev=937336&r1=937335&r2=937336&view=diff" 
> target=_blank 
> >http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java?rev=937336&r1=937335&r2=937336&view=diff
==============================================================================
--- 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java 
> (original)
+++ 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java 
> Fri Apr 23 15:32:55 2010
@@ -233,7 +233,7 @@ public abstract class 
> AbstractOwbBean<T>
            
> e.printStackTrace();
         }finally
    
>      {
-            
> CreationalContextImpl.currentRemoveObject.remove();
+      
>      
> CreationalContextImpl.currentRemoveObject.set(null);
      
>    }
     }


Modified: 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionPointBean.java
URL: 
> 
> href="http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionPointBean.java?rev=937336&r1=937335&r2=937336&view=diff" 
> target=_blank 
> >http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionPointBean.java?rev=937336&r1=937335&r2=937336&view=diff
==============================================================================
--- 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionPointBean.java 
> (original)
+++ 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionPointBean.java 
> Fri Apr 23 15:32:55 2010
@@ -46,7 +46,7 @@ public class InjectionPointBean 
> extends 
            
      
>    }finally
         {
-      
>       local.remove();
+          
>   local.set(null);
         }
    
> }


Modified: 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java
URL: 
> 
> href="http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java?rev=937336&r1=937335&r2=937336&view=diff" 
> target=_blank 
> >http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java?rev=937336&r1=937335&r2=937336&view=diff
==============================================================================
--- 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java 
> (original)
+++ 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java 
> Fri Apr 23 15:32:55 2010
@@ -263,7 +263,7 @@ public class 
> ProducerMethodBean<T> exten
            
> }
             else
      
>        {
-              
>  
> AbstractInjectable.dependentInstanceOfProducerMethods.remove();
+  
>              
> AbstractInjectable.dependentInstanceOfProducerMethods.set(null);
  
>            }
         }

> 

Modified: 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationImpl.java
URL: 
> 
> href="http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationImpl.java?rev=937336&r1=937335&r2=937336&view=diff" 
> target=_blank 
> >http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationImpl.java?rev=937336&r1=937335&r2=937336&view=diff
==============================================================================
--- 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationImpl.java 
> (original)
+++ 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationImpl.java 
> Fri Apr 23 15:32:55 2010
@@ -41,7 +41,7 @@ public class ConversationImpl 
> implements
     /**Transient or not. Transient conversations are 
> destroyed at the end of JSF request*/
     private boolean 
> isTransient = true;

-    /**Default timeout is 
> 3mins*/
+    /**Default timeout is 30mins*/
    
> private long timeout = 30 * 60 * 1000 ;

     /**Id of the 
> session that this conversation is created*/
@@ -61,6 +61,7 @@ public class 
> ConversationImpl implements
      */
     public 
> ConversationImpl()
     {
+        
> 
     }

     /**
@@ -72,7 +73,6 @@ public 
> class ConversationImpl implements
     {
      
>    Asserts.assertNotNull(sessionId);
        
> this.sessionId = sessionId;
-
     }
    
> 
     /**

Modified: 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationManager.java
URL: 
> 
> href="http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationManager.java?rev=937336&r1=937335&r2=937336&view=diff" 
> target=_blank 
> >http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationManager.java?rev=937336&r1=937335&r2=937336&view=diff
==============================================================================
--- 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationManager.java 
> (original)
+++ 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationManager.java 
> Fri Apr 23 15:32:55 2010
@@ -13,8 +13,8 @@
  */
package 
> org.apache.webbeans.conversation;

+import java.util.Collection;

> import java.util.Iterator;
-import java.util.Map;
import 
> java.util.Set;
import java.util.concurrent.ConcurrentHashMap;

@@ 
> -76,19 +76,16 @@ public class ConversationManager
      
> */
     public boolean isConversationExistWithGivenId(String 
> conversationId)
     {
-        synchronized 
> (conversations)
-        {
-      
>       ConversationImpl conv = null;
-      
>       Set<Conversation> set = 
> conversations.keySet();
-            
> Iterator<Conversation> it = set.iterator();
+      
>   ConversationImpl conv = null;
+        
> Set<Conversation> set = conversations.keySet();
+      
>   Iterator<Conversation> it = set.iterator();

-    
>         while (it.hasNext())
+        
> while (it.hasNext())
+        {
+      
>       conv = (ConversationImpl) it.next();
+    
>         if (conv.getId().equals(conversationId))
  
>            {
-          
>       conv = (ConversationImpl) it.next();
-    
>             if 
> (conv.getId().equals(conversationId))
-          
>       {
-              
>       return true;
-            
>     }
+                
> return true;
             }
    
>      }
        
@@ -210,6 +207,7 @@ public 
> class ConversationManager
              
>        {
              
>            ctx.destroy();
      
>                }
+
      
>                it.remove();
    
>              }
        
>      }
@@ -221,19 +219,16 @@ public class 
> ConversationManager
      */
     public void 
> destroyAllConversations()
     {
-        
> synchronized(conversations)
+        
> Collection<ConversationContext> collection = 
> this.conversations.values();
+        if(collection != 
> null && collection.size() > 0)
        
> {
-            if (conversations != 
> null)
+            for (ConversationContext 
> context : collection) 
            
> {
-                
> Map<Conversation, ConversationContext> oldConversations = 
> conversations;
-                
> conversations = new ConcurrentHashMap<Conversation, 
> ConversationContext>();
-              
>  
-                for 
> (ConversationContext ctx : oldConversations.values()) 
-      
>           {
-          
>           ctx.destroy();
-      
>           }
-          
>       conversations.clear();
-        
>     }
+                
> context.destroy();
+            }    
>        
         }
+    
>    
+        //Clear conversations
+  
>       conversations.clear();
     }

> }

Modified: 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/el/WebBeansELResolver.java
URL: 
> 
> href="http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/el/WebBeansELResolver.java?rev=937336&r1=937335&r2=937336&view=diff" 
> target=_blank 
> >http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/el/WebBeansELResolver.java?rev=937336&r1=937335&r2=937336&view=diff
==============================================================================
--- 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/el/WebBeansELResolver.java 
> (original)
+++ 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/el/WebBeansELResolver.java 
> Fri Apr 23 15:32:55 2010
@@ -99,7 +99,7 @@ public class WebBeansELResolver 
> extends 
                
> if(!oldContext.equals(context))
            
>      {
                
>      store.destroy();
-            
>         LOCAL_CONTEXT.remove();
+      
>              
> LOCAL_CONTEXT.set(null);
              
>    }
                
> else
                
> {

Modified: 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/creation/InjectionTargetProducer.java
URL: 
> 
> href="http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/creation/InjectionTargetProducer.java?rev=937336&r1=937335&r2=937336&view=diff" 
> target=_blank 
> >http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/creation/InjectionTargetProducer.java?rev=937336&r1=937335&r2=937336&view=diff
==============================================================================
--- 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/creation/InjectionTargetProducer.java 
> (original)
+++ 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/creation/InjectionTargetProducer.java 
> Fri Apr 23 15:32:55 2010
@@ -88,7 +88,7 @@ public class 
> InjectionTargetProducer<T> 
            
> }
             else
      
>        {
-              
>   AbstractInjectable.instanceUnderInjection.remove();
+    
>            
> AbstractInjectable.instanceUnderInjection.set(null);
      
>        }
         }
    
>    

Modified: 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/spi/se/DefaultContextsService.java
URL: 
> 
> href="http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/spi/se/DefaultContextsService.java?rev=937336&r1=937335&r2=937336&view=diff" 
> target=_blank 
> >http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/spi/se/DefaultContextsService.java?rev=937336&r1=937335&r2=937336&view=diff
==============================================================================
--- 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/spi/se/DefaultContextsService.java 
> (original)
+++ 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/spi/se/DefaultContextsService.java 
> Fri Apr 23 15:32:55 2010
@@ -211,12 +211,12 @@ public class 
> DefaultContextsService exte
     @Override
     public 
> void destroy(Object destroyObject)
     {
-      
>   requestContext.remove();
-        
> sessionContext.remove();
-        
> applicationContext.remove();
-        
> conversationContext.remove();
-        
> dependentContext.remove();
-        
> singletonContext.remove();
+        
> requestContext.set(null);
+        
> sessionContext.set(null);
+        
> applicationContext.set(null);
+        
> conversationContext.set(null);
+        
> dependentContext.set(null);
+        
> singletonContext.set(null);
     }
    
  
>