[IronJacamar] - Possible mem leak in TX synchronizer on afterCompletion() phase
by Andrey Smirnov
Andrey Smirnov [https://community.jboss.org/people/cheezzario] created the discussion
"Possible mem leak in TX synchronizer on afterCompletion() phase"
To view the discussion, visit: https://community.jboss.org/message/831719#831719
--------------------------------------------------------------
Hello.
Let me introduce the problem
App server ( jboss-as-7.1.1.Final ) which is a part of complex distributed app using CORBA for communication fails with OutOfMemoryError
I've investigated the problem and seems like root cause is inability to clean up txSynchs ( and locks ) maps resided in org.jboss.jca.core.connectionmanager.transaction.TransactionSynchronizer class.
More detailed:
Collections mentioned above should be cleaned up in afterCompletion() method but TX is unavailable at that stage, so Transaction.hashCode() returns -1 which leads to dangled TX associations.
Right now I don't understand why javax.transaction.Transaction is used as a key in this maps? For me it seems like this code wil always fail.
I've attached modified source code of TransactionSynchronizer which I used during investigation and partial app log with records specific to one TX.
Regards, Andrey.
--------------------------------------------------------------
Reply to this message by going to Community
[https://community.jboss.org/message/831719#831719]
Start a new discussion in IronJacamar at Community
[https://community.jboss.org/choose-container!input.jspa?contentType=1&con...]
12 years, 8 months
[jBPM] - Human Task Email Notifications
by Raj A
Raj A [https://community.jboss.org/people/mranraj] created the discussion
"Human Task Email Notifications"
To view the discussion, visit: https://community.jboss.org/message/831545#831545
--------------------------------------------------------------
Hi There,
I have been struggling with the email notifications in human task.
1. When a task is created, I want to send an automated email notification to the user. I don’t want to do it from my java code and wanted to use the human task to accomplish this.
2. From the documentation I understood that I can use the task’s notifications property to configure this.
a. If I want to send notification immediately is there any other way to do this instead of Type (I.e. not-started) + expires At (I.e. 1m) combination? As I read in V3 documentation “notify= true” property.
b. Notifications takes the ‘user’ as input for the FROM and TO columns instead of email address. This brings me to my next questions how to map USER/organizationalentity with email address. Please advice how to accomplish this with mySql instead of property files.
Finally, is V 5.4 is production ready? did anybody used it production environment?
Thank you.
Raj
--------------------------------------------------------------
Reply to this message by going to Community
[https://community.jboss.org/message/831545#831545]
Start a new discussion in jBPM at Community
[https://community.jboss.org/choose-container!input.jspa?contentType=1&con...]
12 years, 8 months
[Performance Tuning] - ClassLoader bottleneck in 5.1.0.GA
by Mikal Henriksen
Mikal Henriksen [https://community.jboss.org/people/stylpe] created the discussion
"ClassLoader bottleneck in 5.1.0.GA"
To view the discussion, visit: https://community.jboss.org/message/831673#831673
--------------------------------------------------------------
So it looks like our app is affected by JBCL-185 and/or JBCL-100. We were running visualvm during load testing, and discovered that EJB proxy instances had a very high self-time. This is a SLSB with a @Local interface, so it should be pretty fast.
We did a thread dump, and it turns out most of the servlet threads were blocked waiting for a class loader. Some examples:
Several are like this:
Thread: ajp-0.0.0.0-8009-11 : priority:5, demon:true, threadId:198, threadState:BLOCKED
- waiting on <0x22d22fe3> (a org.jboss.web.tomcat.service.WebCtxLoader$ENCLoader)
java.lang.ClassLoader.loadClass(ClassLoader.java:291)
java.lang.ClassLoader.loadClass(ClassLoader.java:295)
- locked <0x2c25bf62> (a org.jboss.ejb3.common.classloader.PrimitiveAwareClassLoader)
java.lang.ClassLoader.loadClass(ClassLoader.java:247)
org.jboss.ejb3.common.lang.SerializableMethod.getClassFromName(SerializableMethod.java:307)
org.jboss.ejb3.common.lang.SerializableMethod.getClassType(SerializableMethod.java:282)
org.jboss.ejb3.common.lang.SerializableMethod.toMethod(SerializableMethod.java:233)
org.jboss.ejb3.common.lang.SerializableMethod.toMethod(SerializableMethod.java:220)
org.jboss.ejb3.proxy.impl.handler.session.SessionProxyInvocationHandlerBase.handleInvocationDirectly(SessionProxyInvocationHandlerBase.java:240)
org.jboss.ejb3.proxy.impl.handler.session.SessionProxyInvocationHandlerBase.invoke(SessionProxyInvocationHandlerBase.java:182)
org.jboss.ejb3.proxy.impl.handler.session.SessionProxyInvocationHandlerBase.invoke(SessionProxyInvocationHandlerBase.java:164)
$Proxy815.getAdaptedItem(Unknown Source)
[servlet method here]
The thread owning 0x22d22fe3:
Thread: ajp-0.0.0.0-8009-18 : priority:5, demon:true, threadId:205, threadState:BLOCKED
- waiting on <0x1b4ddacc> (a org.jboss.classloader.spi.base.BaseClassLoader)
java.lang.Class.forName0(Native Method)
java.lang.Class.forName(Class.java:247)
org.jboss.classloader.plugins.loader.ClassLoaderToLoaderAdapter.loadClass(ClassLoaderToLoaderAdapter.java:172)
org.jboss.classloader.spi.ClassLoaderDomain.loadClassFromParent(ClassLoaderDomain.java:352)
org.jboss.classloader.spi.ClassLoaderDomain.loadClassAfter(ClassLoaderDomain.java:323)
org.jboss.classloader.spi.base.BaseClassLoaderDomain.loadClass(BaseClassLoaderDomain.java:275)
org.jboss.classloader.spi.base.BaseClassLoaderDomain.loadClass(BaseClassLoaderDomain.java:1119)
org.jboss.classloader.spi.base.BaseClassLoader.loadClassFromDomain(BaseClassLoader.java:798)
org.jboss.classloader.spi.base.BaseClassLoader.loadClass(BaseClassLoader.java:441)
- locked <0x357d9553> (a org.jboss.classloader.spi.base.BaseClassLoader)
java.lang.ClassLoader.loadClass(ClassLoader.java:295)
- locked <0x22d22fe3> (a org.jboss.web.tomcat.service.WebCtxLoader$ENCLoader)
java.lang.ClassLoader.loadClass(ClassLoader.java:295)
- locked <0x7866dc25> (a org.jboss.ejb3.common.classloader.PrimitiveAwareClassLoader)
java.lang.ClassLoader.loadClass(ClassLoader.java:247)
org.jboss.ejb3.common.lang.SerializableMethod.getClassFromName(SerializableMethod.java:307)
org.jboss.ejb3.common.lang.SerializableMethod.toMethod(SerializableMethod.java:239)
org.jboss.ejb3.common.lang.SerializableMethod.toMethod(SerializableMethod.java:220)
org.jboss.ejb3.proxy.impl.handler.session.SessionProxyInvocationHandlerBase.invoke(SessionProxyInvocationHandlerBase.java:182)
org.jboss.ejb3.proxy.impl.handler.session.SessionProxyInvocationHandlerBase.invoke(SessionProxyInvocationHandlerBase.java:164)
$Proxy815.getAdaptedItem(Unknown Source)
[servlet method here]
The thread owning 0x1b4ddacc:
Thread: ajp-0.0.0.0-8009-5 : priority:5, demon:true, threadId:192, threadState:RUNNABLE
java.util.Arrays.copyOfRange(Arrays.java:3209)
java.lang.String.(String.java:215)
java.lang.StringBuilder.toString(StringBuilder.java:430)
org.jboss.classloader.spi.base.BaseClassLoader.loadClass(BaseClassLoader.java:448)
- locked <0x1b4ddacc> (a org.jboss.classloader.spi.base.BaseClassLoader)
java.lang.ClassLoader.loadClass(ClassLoader.java:295)
- locked <0x24c3e995> (a org.jboss.ejb3.common.classloader.PrimitiveAwareClassLoader)
java.lang.ClassLoader.loadClass(ClassLoader.java:247)
org.jboss.ejb3.common.lang.SerializableMethod.getClassFromName(SerializableMethod.java:307)
org.jboss.ejb3.common.lang.SerializableMethod.toMethod(SerializableMethod.java:239)
org.jboss.ejb3.session.SessionSpecContainer.invoke(SessionSpecContainer.java:135)
org.jboss.ejb3.session.SessionSpecContainer.invoke(SessionSpecContainer.java:216)
org.jboss.ejb3.proxy.impl.handler.session.SessionProxyInvocationHandlerBase.invoke(SessionProxyInvocationHandlerBase.java:207)
org.jboss.ejb3.proxy.impl.handler.session.SessionProxyInvocationHandlerBase.invoke(SessionProxyInvocationHandlerBase.java:164)
$Proxy815.getAdaptedItem(Unknown Source)
[servlet method here]
According to what I've read on the issue pages and in discussions here, the root cause is the classes aren't properly cached, and thus have to be loaded on every single session bean invocation.
Is there a way to work around this issue? Upgrading JBoss is not an option, but if upgrading only the class loader component is possible, we could do that.
--------------------------------------------------------------
Reply to this message by going to Community
[https://community.jboss.org/message/831673#831673]
Start a new discussion in Performance Tuning at Community
[https://community.jboss.org/choose-container!input.jspa?contentType=1&con...]
12 years, 8 months