I have multiple threads spinning around, collecting messages and asserting facts into a single working memory instance. Some of these threads might actually be adding rules to the RuleBase as well. Is synchronizing on the RuleBase instance and WorkingMemory instance sufficient to ensure the rule base integrity? Or do I need to serialize the access to the RuleBase and WorkingMemory?
In particular I have a test class that uses 3 threads. One thread reads drl files, one reads config facts and one reads state information facts at various times. If I ensure they all run serially, all is well. If I let them run concurrently, and try to synchronize access to the working memory, I get some strange exceptions from the ClassFieldExtractor.getValue(...) method claiming it has an unknown source to evaluate. Does this sound familiar to anyone?? Thanks, Justine