[jboss-jira] [JBoss JIRA] Created: (JBRULES-2381) NPE during usage after serialize/deserialize

Justin Waugh (JIRA) jira-events at lists.jboss.org
Wed Dec 16 15:18:31 EST 2009


NPE during usage after serialize/deserialize
--------------------------------------------

                 Key: JBRULES-2381
                 URL: https://jira.jboss.org/jira/browse/JBRULES-2381
             Project: Drools
          Issue Type: Bug
      Security Level: Public (Everyone can see)
          Components: drools-core
    Affects Versions: 5.0.1.FINAL
         Environment: Windows XP / Server 2003, JDK 1.6
            Reporter: Justin Waugh
            Assignee: Mark Proctor
         Attachments: test.zip

In our application we are often removing and adding new rules.  We also have a requirement to serialize state so that we can continue across restarts.  We've seen a few problems related to the state of the knowledgebase after serializing/deserializing related to removing rules.   Both are NPE's, and from debugging into Drools, both seem to be a case of a deserialized transient value not being wired up correctly.  In one case the reader field of ClassFieldReader is not wired, so the InternalReadAccessor is null, and in the other the expression field of EvalCondition is left null.  I have not been able to reproduce in a simple test case the first problem, though it is easily reproduceable in our live system, but I was able to reproduce the second, and I've attached a test case to demonstrate it.  Both only happen with the combination of removing rules and serialization/deserialization.  If the rules are never removed, the problems do not exhibit themselves.  Here are the 2 stack traces:

java.lang.NullPointerException
	at org.drools.base.ClassFieldReader.getValueType(ClassFieldReader.java:96)
	at org.drools.reteoo.CompositeObjectSinkAdapter.addObjectSink(CompositeObjectSinkAdapter.java:98)
	at org.drools.reteoo.ObjectSource.addObjectSink(ObjectSource.java:143)
	at org.drools.reteoo.AlphaNode.attach(AlphaNode.java:116)
	at org.drools.reteoo.AlphaNode.attach(AlphaNode.java:120)
	at org.drools.reteoo.builder.BuildUtils.attachNode(BuildUtils.java:160)
	at org.drools.reteoo.builder.PatternBuilder.attachAlphaNodes(PatternBuilder.java:295)
	at org.drools.reteoo.builder.PatternBuilder.attachPattern(PatternBuilder.java:117)
	at org.drools.reteoo.builder.PatternBuilder.build(PatternBuilder.java:70)
	at org.drools.reteoo.builder.GroupElementBuilder$AndBuilder.build(GroupElementBuilder.java:126)
	at org.drools.reteoo.builder.GroupElementBuilder.build(GroupElementBuilder.java:73)
	at org.drools.reteoo.builder.ReteooRuleBuilder.addSubRule(ReteooRuleBuilder.java:153)
	at org.drools.reteoo.builder.ReteooRuleBuilder.addRule(ReteooRuleBuilder.java:126)
	at org.drools.reteoo.ReteooBuilder.addRule(ReteooBuilder.java:118)
	at org.drools.reteoo.ReteooRuleBase.addRule(ReteooRuleBase.java:362)
	at org.drools.common.AbstractRuleBase.addRule(AbstractRuleBase.java:618)
	at org.drools.compiler.PackageBuilder.addPackage(PackageBuilder.java:662)
	at org.drools.compiler.PackageBuilder.addPackageFromDrl(PackageBuilder.java:290)
	at org.drools.compiler.PackageBuilder.addKnowledgeResource(PackageBuilder.java:488)
	at org.drools.builder.impl.KnowledgeBuilderImpl.add(KnowledgeBuilderImpl.java:25)

 java.lang.NullPointerException
	at org.drools.rule.EvalCondition.createContext(EvalCondition.java:110)
	at org.drools.reteoo.EvalConditionNode.createMemory(EvalConditionNode.java:231)
	at org.drools.common.ConcurrentNodeMemories.createNodeMemory(ConcurrentNodeMemories.java:96)
	at org.drools.common.ConcurrentNodeMemories.getNodeMemory(ConcurrentNodeMemories.java:75)
	at org.drools.common.AbstractWorkingMemory.getNodeMemory(AbstractWorkingMemory.java:1534)
	at org.drools.reteoo.EvalConditionNode.doRemove(EvalConditionNode.java:263)
	at org.drools.common.BaseNode.remove(BaseNode.java:95)
	at org.drools.reteoo.RuleTerminalNode.doRemove(RuleTerminalNode.java:360)
	at org.drools.common.BaseNode.remove(BaseNode.java:95)
	at org.drools.reteoo.ReteooBuilder.removeRule(ReteooBuilder.java:248)
	at org.drools.reteoo.ReteooRuleBase.removeRule(ReteooRuleBase.java:366)
	at org.drools.common.AbstractRuleBase.removeRule(AbstractRuleBase.java:712)
	at org.drools.common.AbstractRuleBase.removePackage(AbstractRuleBase.java:640)
	at org.drools.impl.KnowledgeBaseImpl.removeKnowledgePackage(KnowledgeBaseImpl.java:166)

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

       




More information about the jboss-jira mailing list