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);
}
>