]
RH Bugzilla Integration commented on DROOLS-339:
------------------------------------------------
Rajesh Rajasekaran <rrajasek(a)redhat.com> changed the Status of [bug
Rules will only fire in the first session created from a
knowledgebase - Segment Memory restore from Prototype conflict
-----------------------------------------------------------------------------------------------------------------------
Key: DROOLS-339
URL:
https://issues.jboss.org/browse/DROOLS-339
Project: Drools
Issue Type: Bug
Security Level: Public(Everyone can see)
Affects Versions: 6.0.0.CR5
Reporter: Davide Sottara
Assignee: Mario Fusco
Priority: Blocker
Fix For: 6.0.1.Final
Given a KB with the two rules below:
{code}
rule "Insert Info "
when
then
insert( "aaa " );
insert( new Integer( 12 ) );
insert( new Double( 4.0 ) );
end
rule "React "
when
Integer()
accumulate (
$n : Double( ) and
Double( ),
$x : count( $n )
)
String( )
then
System.out.println( "Rule fires" );
end
{code}
The rules work normally in the first session created from the KB.
When any additional session is created and used, the SegmentMemories are restored from
the SM Prototypes.
Unfortunately, the AccumulateNode -> RuleTerminalNode segment is restored twice, once
when the "aaa"
triggers the appropriate Beta Node, and once when the subnetwork updates the RIA node.
The latter overwrites the already existing segment, overriding the partial link bits.
See SegmentUtilities line 421, where this tentative patch shows the problem:
{code}
if ( NodeTypeEnums.isLeftTupleSource(node) && wm.getNodeMemory((MemoryFactory)
node).getSegmentMemory() == null )
{code}