-
Bug
-
Resolution: Done
-
Major
-
jBPM 5.1
-
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
- relates to
-
JBRULES-3237 Unmarshalling a marshalled session fails when using a newly initialized knowledgebase
-
- Closed
-