Uploaded image for project: 'jBPM'
  1. jBPM
  2. JBPM-3383

Can't reload persistent StatefulKnowledgeSession

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: Major Major
    • jBPM 5.2
    • jBPM 5.1
    • Runtime Engine
    • None

      I want to simulate an appserver restart when some processes are still running (or rather waiting).
      If the KnowledgeBase is recreated JPAKnowledgeService.loadStatefulKnowledgeSession(...) fails with the RuntimeException "Unable to load session snapshot". loadStatefulKnowledgeSession works if the same KnowledgeBase is used, but of course that won't work in real life in an appserver restart.

      The KnowledgeBase is created like that:

      KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
      kbuilder.add(ResourceFactory.newClassPathResource("TimerPersistence.bpmn2"), ResourceType.BPMN2);
      KnowledgeBase knowledgeBase = kbuilder.newKnowledgeBase();
      return knowledgeBase;
      

      I've attached a small test case that can be run with "mvn test"

      Here's the interesting part of the stack trace:

      java.lang.IllegalStateException: java.lang.reflect.InvocationTargetException
      	at org.drools.persistence.jpa.KnowledgeStoreServiceImpl.buildCommandService(KnowledgeStoreServiceImpl.java:116)
      	at org.drools.persistence.jpa.KnowledgeStoreServiceImpl.loadStatefulKnowledgeSession(KnowledgeStoreServiceImpl.java:84)
      	at org.drools.persistence.jpa.JPAKnowledgeService.loadStatefulKnowledgeSession(JPAKnowledgeService.java:131)
      	...
      Caused by: java.lang.reflect.InvocationTargetException
      	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
      	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
      	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
      	at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
      	at org.drools.persistence.jpa.KnowledgeStoreServiceImpl.buildCommandService(KnowledgeStoreServiceImpl.java:101)
      	... 31 more
      Caused by: java.lang.RuntimeException: Unable to load session snapshot
      	at org.drools.persistence.SessionMarshallingHelper.loadSnapshot(SessionMarshallingHelper.java:96)
      	at org.drools.persistence.SingleSessionCommandService.initKsession(SingleSessionCommandService.java:229)
      	at org.drools.persistence.SingleSessionCommandService.<init>(SingleSessionCommandService.java:177)
      	... 36 more
      Caused by: java.lang.NullPointerException
      	at org.drools.marshalling.impl.DefaultMarshaller.unmarshall(DefaultMarshaller.java:80)
      	at org.drools.persistence.SessionMarshallingHelper.loadSnapshot(SessionMarshallingHelper.java:91)
      	... 38 more
      

            kverlaen@redhat.com Kris Verlaenen
            krausest Stefan Krause (Inactive)
            Votes:
            2 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: