Bug 748345

Summary: Exception when using CEP and left-right unlinking
Product: [JBoss] JBoss Enterprise BRMS Platform 5 Reporter: Tomas Schlosser <tschloss>
Component: BRE (Expert, Fusion)Assignee: Nobody <nobody>
Status: MODIFIED --- QA Contact: Lukáš Petrovický <lpetrovi>
Severity: medium Docs Contact:
Priority: unspecified    
Version: BRMS 5.3.0.GACC: lpetrovi, mproctor
Target Milestone: ---   
Target Release: future   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Attachments:
Description Flags
Simple reproducer none

Description Tomas Schlosser 2011-10-24 08:26:01 UTC
Created attachment 529754 [details]
Simple reproducer

Description of problem:
When using temporal operator and knowledge base with left-right unlinking enabled, I get an exception.

Version-Release number of selected component (if applicable):
BRMS-5.2.0.GA

How reproducible:
Every time.

Steps to Reproduce:
1. Run included test case
  
Actual results:
Exception in thread "main" org.drools.RuntimeDroolsException: Unexpected exception executing action org.drools.reteoo.PropagationQueuingNode$PropagateAction@6545d2
	at org.drools.common.AbstractWorkingMemory.executeQueuedActions(AbstractWorkingMemory.java:1005)
	at org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:344)
	at org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:293)
	at org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:117)
	at org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:49)
	at org.jboss.qa.brms.fusionunlinking.SimpleFusionTest.testAfterOperator(SimpleFusionTest.java:38)
	at org.jboss.qa.brms.fusionunlinking.SimpleFusionTest.main(SimpleFusionTest.java:23)
Caused by: org.drools.RuntimeDroolsException: Error updating sink. Not safe to update sink as the PropagatingQueueingNode memory is not empty at node: [PropagationQueuingNode(8)]
	at org.drools.reteoo.PropagationQueuingNode.updateSink(PropagationQueuingNode.java:103)
	at org.drools.reteoo.BetaNode.leftUnlinked(BetaNode.java:628)
	at org.drools.reteoo.JoinNode.assertLeftTuple(JoinNode.java:67)
	at org.drools.reteoo.SingleLeftTupleSinkAdapter.doPropagateAssertLeftTuple(SingleLeftTupleSinkAdapter.java:197)
	at org.drools.reteoo.SingleLeftTupleSinkAdapter.propagateAssertLeftTuple(SingleLeftTupleSinkAdapter.java:72)
	at org.drools.reteoo.JoinNode.assertObject(JoinNode.java:161)
	at org.drools.reteoo.SingleObjectSinkAdapter.propagateAssertObject(SingleObjectSinkAdapter.java:59)
	at org.drools.reteoo.PropagationQueuingNode$AssertAction.execute(PropagationQueuingNode.java:354)
	at org.drools.reteoo.PropagationQueuingNode.propagateActions(PropagationQueuingNode.java:238)
	at org.drools.reteoo.PropagationQueuingNode$PropagateAction.execute(PropagationQueuingNode.java:502)
	at org.drools.common.AbstractWorkingMemory.executeQueuedActions(AbstractWorkingMemory.java:1003)
	... 6 more

Expected results:


Additional info:

Comment 2 Edson Tirelli 2012-02-01 21:16:56 UTC
The root of the problem is the use of entry points with unlinking. When using entry points, the engine uses PropagationQueueingNodes and that node does not support linking/unlinking when there are pending propagations. 

Looking for a solution.

Comment 3 Edson Tirelli 2012-02-07 00:32:04 UTC
Discussed the subject with Mark. Left/Right unlinking is a feature developed by a community member and requires some improvements. At this point, we recommend against the use of this option, until later this year when we will be able to address its shortcomings.

Comment 4 Ryan Zhang 2012-02-15 09:12:12 UTC
Please verify the issue on 5.3 ER4.

Comment 5 Tomas Schlosser 2012-02-22 11:21:25 UTC
I removed jboss-brms-5.3.0 flag to mark it not targeted for 5.3.0 release, but the issue still stands.

Comment 6 Mark Proctor 2012-04-06 00:45:10 UTC
The feature has been almost completely rewritten in a branch and bears no similarity to the current implementation. We'll merge that into .org 5.5 at some point.

I'm marking this as "future" to take it out of the BRMS 5.3 work schedule. Feel free to delete all together, or to leave it as a reminder to test against the unlinking from .org 5.5 once it makes it's way to production.