Uploaded image for project: 'Drools'
  1. Drools
  2. DROOLS-576

NullPointerException in ActivationTimerInputMarshaller.deserialize()

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: Major Major
    • 6.2.0.CR2
    • 6.2.0.Beta1
    • None
    • None

      With the following conditions:

      • A persisted ksession
      • RETEOO engine
      • ksession is disposed while a timer is activated
      • ksession is loaded with a new kbase which doesn't have a rule which associated with the timer

      ActivationTimerInputMarshaller.deserialize() throws a NullPointerException so failed to load the ksession.

      java.lang.RuntimeException: Unable to load session snapshot
      	at org.drools.persistence.SessionMarshallingHelper.loadSnapshot(SessionMarshallingHelper.java:88) ~[classes/:na]
      	at org.drools.persistence.SingleSessionCommandService.initExistingKnowledgeSession(SingleSessionCommandService.java:239) ~[classes/:na]
      	at org.drools.persistence.SingleSessionCommandService.<init>(SingleSessionCommandService.java:172) ~[classes/:na]
      	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) [na:1.7.0_67]
      	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) [na:1.7.0_67]
      	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) [na:1.7.0_67]
      	at java.lang.reflect.Constructor.newInstance(Constructor.java:526) [na:1.7.0_67]
      	at org.drools.persistence.jpa.KnowledgeStoreServiceImpl.buildCommandService(KnowledgeStoreServiceImpl.java:122) [classes/:na]
      	at org.drools.persistence.jpa.KnowledgeStoreServiceImpl.loadKieSession(KnowledgeStoreServiceImpl.java:90) [classes/:na]
      	at org.drools.persistence.jpa.KnowledgeStoreServiceImpl.loadKieSession(KnowledgeStoreServiceImpl.java:39) [classes/:na]
      	at org.kie.internal.persistence.jpa.JPAKnowledgeService.loadStatefulKnowledgeSession(JPAKnowledgeService.java:130) [kie-internal-6.2.0-SNAPSHOT.jar:6.2.0-SNAPSHOT]
      	at org.drools.persistence.timer.integrationtests.TimerAndCalendarTest.testTimerWithRemovingRule(TimerAndCalendarTest.java:340) [test-classes/:na]
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.7.0_67]
      ...
      Caused by: java.lang.NullPointerException: null
      	at org.drools.core.common.Scheduler$ActivationTimerInputMarshaller.deserialize(Scheduler.java:216) ~[drools-core-6.2.0-SNAPSHOT.jar:6.2.0-SNAPSHOT]
      	at org.drools.core.marshalling.impl.ProtobufInputMarshaller.readTimer(ProtobufInputMarshaller.java:700) ~[drools-core-6.2.0-SNAPSHOT.jar:6.2.0-SNAPSHOT]
      	at org.drools.core.marshalling.impl.ProtobufInputMarshaller.readSession(ProtobufInputMarshaller.java:282) ~[drools-core-6.2.0-SNAPSHOT.jar:6.2.0-SNAPSHOT]
      	at org.drools.core.marshalling.impl.ProtobufInputMarshaller.readSession(ProtobufInputMarshaller.java:155) ~[drools-core-6.2.0-SNAPSHOT.jar:6.2.0-SNAPSHOT]
      	at org.drools.core.marshalling.impl.ProtobufMarshaller.unmarshall(ProtobufMarshaller.java:110) ~[drools-core-6.2.0-SNAPSHOT.jar:6.2.0-SNAPSHOT]
      	at org.drools.core.marshalling.impl.ProtobufMarshaller.unmarshall(ProtobufMarshaller.java:54) ~[drools-core-6.2.0-SNAPSHOT.jar:6.2.0-SNAPSHOT]
      	at org.drools.persistence.SessionMarshallingHelper.loadSnapshot(SessionMarshallingHelper.java:83) ~[classes/:na]
      	... 44 common frames omitted
      

      Probably we may silently ignore the timer when leftTuple is not found.

            mfusco@redhat.com Mario Fusco
            rhn-support-tkobayas Toshiya Kobayashi
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: