[rules-users] java.lang.NoClassDefFoundError in rule execution

Zhuo Li milanello1998 at gmail.com
Sat Mar 10 11:26:05 EST 2012


Hi, folks,

 

I'm using Drools 5.1, JDK 1.6 on tomcat 6.0.28 to build a OLTP application.
System's volume is about 1.5 million transactions a day. The pilot PROD
release was done about 1 week ago and we've noticed many
NoClassDefFoundError exception run time. A sample piece is pasted below. For
information security concern, I masked class names here. This happened much
more frequent when system load pressure is big - memory is between 80% to
100% and disk is between 80% - 100%. As we are running on a cloud virtual
instance environment, virtual node has relatively small profile - 40GB disk,
4GB memory, 2 core Intel 3.0 GHz CPU. I've searched through the web and
found some reported bug -
https://issues.jboss.org/browse/JBRULES-2253?_sscc=t. here I got two
questions:

1.       If anybody in the community has met similar issue before and how
you fix it?

2.       It seems I can either convert my rule into Java Dialect or turn off
MVEL2 JIT attribute: Dmvel2.disable.jit=true. Does anybody have summary
information about the good and bad between MVEL and JAVA dialect?

 

ERROR>2012-03-09 10:00:22,432
com.xxx.xxx.xxx.drools.SessionManager[pool-5-thread-6]: Unexpected error :

java.lang.NoClassDefFoundError: com/xxx/xxx/xxx/xxx/xxx/GetAmountTolerance

         at ASMAccessorImpl_20916505061331280591040.getValue(Unknown Source)

         at
org.mvel2.optimizers.dynamic.DynamicGetAccessor.getValue(DynamicGetAccessor.
java:73)

         at
org.mvel2.ast.ASTNode.getReducedValueAccelerated(ASTNode.java:110)

         at
org.mvel2.ast.BinaryOperation.getReducedValueAccelerated(BinaryOperation.jav
a:124)

         at org.mvel2.MVELRuntime.execute(MVELRuntime.java:89)

         at
org.mvel2.compiler.CompiledExpression.getValue(CompiledExpression.java:125)

         at org.mvel2.MVEL.executeExpression(MVEL.java:928)

         at
org.drools.base.mvel.MVELPredicateExpression.evaluate(MVELPredicateExpressio
n.java:101)

         at
org.drools.rule.PredicateConstraint.isAllowedCachedLeft(PredicateConstraint.
java:314)

         at
org.drools.common.DefaultBetaConstraints.isAllowedCachedLeft(DefaultBetaCons
traints.java:226)

         at org.drools.reteoo.JoinNode.assertLeftTuple(JoinNode.java:98)

         at
org.drools.reteoo.SingleLeftTupleSinkAdapter.doPropagateAssertLeftTuple(Sing
leLeftTupleSinkAdapter.java:197)

         at
org.drools.reteoo.SingleLeftTupleSinkAdapter.createAndPropagateAssertLeftTup
le(SingleLeftTupleSinkAdapter.java:146)

         at
org.drools.reteoo.LeftInputAdapterNode.assertObject(LeftInputAdapterNode.jav
a:154)

         at
org.drools.reteoo.SingleObjectSinkAdapter.propagateAssertObject(SingleObject
SinkAdapter.java:59)

         at org.drools.reteoo.AlphaNode.assertObject(AlphaNode.java:134)

         at
org.drools.reteoo.SingleObjectSinkAdapter.propagateAssertObject(SingleObject
SinkAdapter.java:59)

         at org.drools.reteoo.AlphaNode.assertObject(AlphaNode.java:134)

         at
org.drools.reteoo.CompositeObjectSinkAdapter.doPropagateAssertObject(Composi
teObjectSinkAdapter.java:450)

         at
org.drools.reteoo.CompositeObjectSinkAdapter.propagateAssertObject(Composite
ObjectSinkAdapter.java:368)

         at
org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:193)

         at
org.drools.reteoo.EntryPointNode.assertObject(EntryPointNode.java:191)

         at
org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:332)

         at
org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:293)

         at
org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:90
5)

         at
org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:86
4)

         at
org.drools.impl.StatefulKnowledgeSessionImpl.insert(StatefulKnowledgeSession
Impl.java:255)

         at
com.ssc.gce.reconcile.drools.SessionManager.insert(SessionManager.java:116)

         at
com.ssc.gce.reconcile.drools.SessionManager.run(SessionManager.java:171)

         at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.ja
va:886)

         at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:9
08)

         at java.lang.Thread.run(Thread.java:662)

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20120311/19f64660/attachment.html 


More information about the rules-users mailing list