-
Bug
-
Resolution: Done
-
Major
-
7.13.2.GA
-
False
-
None
-
False
-
Release Notes
-
-
-
-
-
-
+
-
-
Customer see performance degradation when increasing number of concurrent rule execution in multi thread.
According to thread dump, the following stack or similar one appear so frequently in RUNNABLE threads.
java.lang.Thread.State: RUNNABLE at org.drools.core.reteoo.RightTupleImpl.getInputOtnId(RightTupleImpl.java:252) at org.drools.core.reteoo.BetaNode.modifyObject(BetaNode.java:322) at org.drools.core.reteoo.CompositeObjectSinkAdapter.doPropagateModifyObject(CompositeObjectSinkAdapter.java:755) at org.drools.core.reteoo.CompositeObjectSinkAdapter.propagateModifyObject(CompositeObjectSinkAdapter.java:669) at org.drools.core.reteoo.AlphaNode.modifyObject(AlphaNode.java:146) at org.drools.core.reteoo.CompositeObjectSinkAdapter.doPropagateModifyObject(CompositeObjectSinkAdapter.java:755) ...
java.lang.Thread.State: RUNNABLE at org.drools.core.reteoo.RightTupleImpl.getInputOtnId(RightTupleImpl.java:252) at org.drools.core.reteoo.BetaNode.modifyObject(BetaNode.java:322) at org.drools.core.reteoo.CompositeObjectSinkAdapter.doPropagateModifyObject(CompositeObjectSinkAdapter.java:755) at org.drools.core.reteoo.CompositeObjectSinkAdapter.propagateModifyObject(CompositeObjectSinkAdapter.java:669) at org.drools.core.reteoo.ObjectTypeNode.modifyObject(ObjectTypeNode.java:396) at org.drools.core.phreak.PropagationEntry$Update.execute(PropagationEntry.java:233) ...
java.lang.Thread.State: RUNNABLE at org.drools.core.reteoo.RightTupleImpl.getInputOtnId(RightTupleImpl.java:252) at org.drools.core.reteoo.BetaNode.modifyObject(BetaNode.java:322) at org.drools.core.reteoo.BetaNode.byPassModifyToBetaNode(BetaNode.java:571) at org.drools.core.reteoo.CompositeObjectSinkAdapter.byPassModifyToBetaNode(CompositeObjectSinkAdapter.java:732) at org.drools.core.reteoo.AlphaNode.byPassModifyToBetaNode(AlphaNode.java:160) at org.drools.core.reteoo.AlphaNode.modifyObject(AlphaNode.java:152) ...
When analysing by JFR, the following methods appears at the top of the list in Method profiling.
org.drools.core.reteoo.RightTupleImpl.getInputOtnId() org.drools.core.reteoo.CompositeObjectSinkAdapter.byPassModifyToBetaNode(InternalFactHandle, ModifyPreviousTuples, PropagationContext, InternalWorkingMemory) org.drools.core.reteoo.RightTupleImpl.getTupleSink() org.drools.core.reteoo.CompositeObjectSinkAdapter.propagateAssertObject(InternalFactHandle, PropagationContext, InternalWorkingMemory)
So modifyObject performance seems to be degraded when increasing concurrency.
- incorporates
-
DROOLS-7521 Fix the secondary super cache problem in Drools
- Open