-
Bug
-
Resolution: Done
-
Major
-
None
-
None
-
2017 Week 22-23
-
-
-
NEW
-
NEW
Given:
two agenda groups: A1 and A2.
Rule R1 in agenda group A1 and rule R2 in agenda group A2.
R1 matches facts of type T1, deletes them and creates facts of type T2.
R2 matches facts of type T2 and does soemthing with them (it doesn't matter, because issue happens even if R2 never fired).
Scenario:
- Create session, add R1 and R2 rules
- add some facts of T1 type
- set focus on A1 agenda group
- invoke "fireAllRules" method
- Invoke "getObjects" and assure that session contains only T2 facts
- analyze objects in memory (by jmap + memory analyzing tool or just traversing references by reflection) and assure that T1 facts are still reachable via session object.
- serialize session using marshaller and deserialize in again
- analyze deserialized session and see that it doesn't contain T1 fact references anymore.
Thoughts:
I assumed that T1 references storing is feature, because they can be necessary in some cases (like reverse of their deletion due to logical inversion of truth - not sure, but maybe), but T1 deletion after (de)serialization points out the opposite.