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

Can't reload persistent StatefulKnowledgeSession

    XMLWordPrintable

Details

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

    Description

      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
      

      Attachments

        Issue Links

          Activity

            People

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

              Dates

                Created:
                Updated:
                Resolved: