[rules-users] Problem with JPA session persistence in Drools Flow (5.0.1)

Kris Verlaenen kris.verlaenen at cs.kuleuven.be
Tue Aug 11 19:46:08 EDT 2009


The fix for this issue has been added to trunk about a month ago already
I think, have you already tried with the 5.1.0 SNAPSHOT release? Does
this solve your issue?

You can get the snapshot at
https://hudson.jboss.org/hudson/job/drools/lastSuccessfulBuild/artifact/

Kris

Quoting SBalakrishnan <Sanjay.Balakrishnan at fnis.com>:

> 
> Looks like I am running into the same/similar issue while recreating
> from a
> session_id.
> Exception pasted below.
> 
> Any idea whether it will be addressed in the coming release ?
> 
> 
> Thanks in advance..
> 
> 
> /*--------------------------------------------*/
> 
> Hibernate: select sessioninf0_.id as id0_0_, sessioninf0_.dirty as
> dirty0_0_, sessioninf0_.lastModificationDate as lastModi3_0_0_,
> sessioninf0_.rulesByteArray as rulesByt4_0_0_, sessioninf0_.startDate
> as
> startDate0_0_ from SessionInfo sessioninf0_ where sessioninf0_.id=?
> java.lang.RuntimeException: Unable to load session snapshot
> 	at
>
org.drools.persistence.session.JPASessionMarshallingHelper.loadSnapshot(JPASessionMarshallingHelper.java:112)
> 	at
>
org.drools.persistence.session.JPASessionMarshallingHelper.<init>(JPASessionMarshallingHelper.java:46)
> 	at
>
org.drools.persistence.session.SingleSessionCommandService.<init>(SingleSessionCommandService.java:171)
> 	at
>
org.drools.persistence.jpa.impl.JPAKnowledgeServiceProviderImpl.loadStatefulKnowledgeSession(JPAKnowledgeServiceProviderImpl.java:75)
> 	at
>
org.drools.persistence.jpa.JPAKnowledgeService.loadStatefulKnowledgeSession(JPAKnowledgeService.java:102)
> 	at
>
org.drools.examples.process.order.OrderExample.createWorkingMemory(OrderExample.java:257)
> 	at
>
org.drools.examples.process.order.OrderExample.<init>(OrderExample.java:99)
> 	at
> org.drools.examples.process.order.OrderExample.main(OrderExample.java:80)
> Caused by: java.lang.NullPointerException
> 	at
>
org.drools.marshalling.impl.InputMarshaller.readLeftTuple(InputMarshaller.java:496)
> 	at
>
org.drools.marshalling.impl.InputMarshaller.readLeftTuples(InputMarshaller.java:426)
> 	at
>
org.drools.marshalling.impl.InputMarshaller.readFactHandles(InputMarshaller.java:349)
> 	at
>
org.drools.marshalling.impl.InputMarshaller.readSession(InputMarshaller.java:207)
> 	at
>
org.drools.marshalling.impl.DefaultMarshaller.unmarshall(DefaultMarshaller.java:75)
> 	at
>
org.drools.persistence.session.JPASessionMarshallingHelper.loadSnapshot(JPASessionMarshallingHelper.java:104)
> /*--------------------------------------------*/
> 
> 
> Mauricio Salatino wrote:
> > 
> > Ok, I will try to take a look at it.. this week..
> > I will let you know if I can fix it
> > 
> > 2009/7/28 DroolsUser <rafiuddin.mk at gmail.com>:
> >> Mark / salaboy, I am also facing same problem while recreate the
> session
> >> from database. Can you advice any alternative, so that I can go
> forward
> >> till
> >> the next release. Moreover when is the new release is ....... Do
> new
> >> release
> >> will targeting this kind problem? Please suggest any alternative
> to
> >> recreate
> >> the session from db. Thanks in advance......
> >>
> >> gairey wrote:
> >> Mark, Done: https://jira.jboss.org/jira/browse/JBRULES-2199 -
> thanks for
> >> the
> >> quick response. Regards, Alan Mark Proctor Sent by:
> >> rules-users-bounces at lists.jboss.org 08/07/2009 13:49 Please
> respond to
> >> Rules
> >> Users List To Rules Users List cc Subject Re: [rules-users]
> Problem with
> >> JPA
> >> session persistence in Drools Flow (5.0.1) Can you open a JIRA for
> this,
> >> and
> >> we'll make sure it's done in the next few weeks:
> >> https://jira.jboss.org/jira/browse/JBRULES thanks Mark
> >> Alan.Gairey at tessella.com wrote: I'm currently using Drools Flow
> with JPA
> >> session persistence enabled as described in section 5.1 of the
> User
> >> Guide.
> >> As a process executes, session information is saved to the H2
> database
> >> correctly. The problem comes if a process only executes part way
> through,
> >> and I then try to finish the process by recreating a session using
> the
> >> code:
> >> // recreate the session from database using the sessionId ksession
> =
> >> JPAKnowledgeService.loadStatefulKnowledgeSession( sessionId,
> kbase, null,
> >> env ); This gives me a NullPointerException. Having looked into
> the
> >> Drools
> >> Flow source code, I think the problem is in the class
> >>
>
drools-persistence-jpa\src\main\java\org\drools\persistence\session\SingleSessionCommandService.java.
> >> The 4th constructor of this class is called as part of the loading
> of a
> >> knowledge session from the H2 database; this in turn leads to the
> >> afterCompletion method of the inner class SynchronizationImpl
> being
> >> called.
> >> The final two lines of this method are:
> ((JPAProcessInstanceManager)
> >> ((ReteooWorkingMemory)
> >> session).getProcessInstanceManager()).clearProcessInstances();
> >> ((JPAWorkItemManager) ((ReteooWorkingMemory)
> >> session).getWorkItemManager()).clearWorkItems(); However, when
> called via
> >> the route described above, the session member variable of
> >> SingleSessionCommandService has not been set, thus causing the
> >> NullPointerException. (Interestingly, running the unit tests for
> >> drools-persistence-jpa does result in the NullPointerException
> being
> >> thrown
> >> multiple times, although the tests are still listed as having
> passed.) I
> >> believe enclosing the above two lines as follows will fix the
> problem: if
> >> (session != null) { ((JPAProcessInstanceManager)
> ((ReteooWorkingMemory)
> >> session).getProcessInstanceManager()).clearProcessInstances();
> >> ((JPAWorkItemManager) ((ReteooWorkingMemory)
> >> session).getWorkItemManager()).clearWorkItems(); } Also, in the
> 4th
> >> constructor of SingleSessionCommandService, after the session has
> been
> >> set,
> >> the following line needs to be added to ensure the session id is
> the same
> >> as
> >> the session info id: ((ReteooStatefulSession)
> this.session).setId(
> >> this.sessionInfo.getId() ); (This line is present at the end of
> the 3rd
> >> constructor.) It would be great if this fix could make it into the
> Drools
> >> 5.1 release. Thanks.
> _______________________________________________
> >> rules-users mailing list rules-users at lists.jboss.org
> >> https://lists.jboss.org/mailman/listinfo/rules-users
> >> _______________________________________________ rules-users
> mailing list
> >> rules-users at lists.jboss.org
> >> https://lists.jboss.org/mailman/listinfo/rules-users
> >> _______________________________________________ rules-users
> mailing list
> >> rules-users at lists.jboss.org
> >> https://lists.jboss.org/mailman/listinfo/rules-users
> >>
> >> ________________________________
> >> View this message in context: Re: Problem with JPA session
> persistence in
> >> Drools Flow (5.0.1)
> >> Sent from the drools - user mailing list archive at Nabble.com.
> >>
> >> _______________________________________________
> >> rules-users mailing list
> >> rules-users at lists.jboss.org
> >> https://lists.jboss.org/mailman/listinfo/rules-users
> >>
> >>
> > 
> > 
> > 
> > -- 
> >  - http://salaboy.wordpress.com
> >  - http://www.jbug.com.ar
> >  - Salatino "Salaboy" Mauricio -
> > _______________________________________________
> > rules-users mailing list
> > rules-users at lists.jboss.org
> > https://lists.jboss.org/mailman/listinfo/rules-users
> > 
> > 
> 
> -- 
> View this message in context:
>
http://www.nabble.com/Problem-with-JPA-session-persistence-in-Drools-Flow-%285.0.1%29-tp24377236p24909794.html
> Sent from the drools - user mailing list archive at Nabble.com.
> 
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
> 




Disclaimer: http://www.kuleuven.be/cwis/email_disclaimer.htm



More information about the rules-users mailing list