Products | Versions |
---|---|
TIBCO BusinessEvents Enterprise Edition | - |
Not Applicable | - |
Resolution:
ShortHashList.remove and TupleTableWithKeyTableImpl.remove are usually indications that the engine is trying to remove a lot of cache-only entries from join tables at the end of every RTC (Run to Completion Cycle).
What is a Join Table.
Join table entries are inserted during the condition evaluation process which happens during an RTC. This happens when an object is new or modified. Note that if you create an object in the pre-processor, this work does not happen until the RTC starts. The entries are removed for deleted objects and for all cache-only objects at the start of the post-RTC. Join tables are specific to a rule. Combining rules by putting simple conditions into an if statement in the action can reduce the number of join tables and the amount of time spent on them.
Thread dump details :
"$default.be.mt$.Thread.4" - Thread t@82
java.lang.Thread.State: RUNNABLE
at com.tibco.cep.kernel.helper.ShortHashList.remove(ShortHashList.java:134)
at com.tibco.cep.kernel.core.base.BaseHandle.unregisterTupleRow(BaseHandle.java:337)
- locked <2ed45c33> (a com.tibco.cep.runtime.service.om.coherence.CacheEventHandle)
at com.tibco.cep.kernel.core.base.tuple.TupleRowNoKey.removeTupleFromTable(TupleRowNoKey.java:39)
at com.tibco.cep.kernel.core.base.BaseHandle.removeFromTables(BaseHandle.java:302)
at com.tibco.cep.kernel.core.rete.ReteNetwork.retractObject(ReteNetwork.java:77)
at com.tibco.cep.kernel.core.rete.ReteWM.removeFromRete(ReteWM.java:2784)
at com.tibco.cep.kernel.core.rete.ReteWM.retractHandleInternal(ReteWM.java:2682)
at com.tibco.cep.kernel.core.rete.ReteWM.retractHandleInternal(ReteWM.java:2692)
at com.tibco.cep.kernel.core.base.OperationList$RetractEntry.execute(OperationList.java:453)
at com.tibco.cep.kernel.core.base.OperationList.performOps(OperationList.java:211)
at com.tibco.cep.kernel.core.rete.ReteWM.resolveConflict(ReteWM.java:327)
at com.tibco.cep.kernel.core.rete.ReteWM.executeRules(ReteWM.java:1366)
at com.tibco.cep.runtime.session.impl.RuleSessionImpl.preprocessPassthru(RuleSessionImpl.java:970)
at com.tibco.cep.runtime.service.om.coherence.cluster.agents.ClusterTaskController.executeTask(ClusterTaskController.java:64)
at com.tibco.cep.runtime.scheduler.impl.WorkerBasedControllerV2$WorkerTask.run(WorkerBasedControllerV2.java:388)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at com.tibco.cep.runtime.util.CustomBEManagedThread.run(CustomBEManagedThread.java:23)
Resolution:
This is a project design issue, not a product issue. A few solutions are to load fewer objects, move some objects away from cache-only or add additional filter conditions to reduce the number of entries in the join tables.