What about the env?
can you show how you set up the environment?
Cheers.
2011/5/26 Shannon Hastings <shannon.hastings(a)inventrio.com>
Ya,
session = JPAKnowledgeService.loadStatefulKnowledgeSession(
map.getSessionId(), getKnowledgeBase(), null, env);
On May 26, 2011, at 11:40 AM, Mauricio Salatino wrote:
Are you using the JPAKnowledgeService?
2011/5/26 Shannon Hastings <shannon.hastings(a)inventrio.com>
> It is actually null. I dont pass any config in when constructing the
> session.
>
>
> On May 26, 2011, at 11:13 AM, Mauricio Salatino wrote:
>
> Can you share the ksession configuration?
>
>
> 2011/5/26 Shannon Hastings <shannon.hastings(a)inventrio.com>
>
>> My session is persistent, i can query the sessioninfo in the DB and see
>> the data. My beans are searializable and I can see that the fact has been
>> deserialized.
>>
>>
>> On May 26, 2011, at 11:05 AM, Mauricio Salatino wrote:
>>
>> Ok, assuming that your session is persistent, are your POJOs
>> serializables?
>> Cheers
>>
>> 2011/5/26 Shannon Hastings <shannon.hastings(a)inventrio.com>
>>
>>> Nope, no change, i am pulling the same drl from guvnor every time. It
>>> only has three rules as show below in the thread. I can restore the session
>>> without error so long as the session does not have any facts in it. Once I
>>> drop a fact in and store, then i cannot restore.
>>>
>>>
>>> On May 26, 2011, at 10:55 AM, Mauricio Salatino wrote:
>>>
>>> Ok, so did you check that you didn't change anything from the moment you
>>> store the ksession and the moment when you restore it?
>>> I usually find this problem when you change a rule and try to restore
>>> the session using the new version of the rule or when you change a business
>>> process definition or the session state from different threads. Can you
>>> check that please?
>>> You will find this unmarshalling problems and it will be very difficult
>>> to debug at that level, when the problem is being caused by some
>>> modification on your code. Greetings
>>>
>>> 2011/5/26 Shannon Hastings <shannon.hastings(a)inventrio.com>
>>>
>>>> I have debugged into this and found this issue. The NPE comes when the
>>>> session unmarsheller runs into a node that does not have a sink or the
sink
>>>> is null. In the debugger i can see the fact and the fact looks right,
has
>>>> all the data from the pojo i sent in. However, it does not have a sink,
but
>>>> it does have a node id. This looks like a bug that was reportedly fixed
>>>> before in 5.1. I dont know enough about the storing of the facts in the
>>>> working memory or the model that is being used under the hood, however,
all
>>>> i have to do to create the problem is create a session, send an object
to
>>>> it, and then try to restore it. And the objects i am sending to it are
>>>> simple pojo's and in the debugger I can see that it was able to read
them
>>>> back out just fine. Below is an exerpt from the
"InputMarshaller" class.
>>>> In the debugger The readlefttuples operation shows the nodeId = 12 and
the
>>>> sink = null and the facthandleId = 1. he it calls readLeftTuple() and
the
>>>> obvious NPE will be thrown because the ParentLeftTuple has a null sink
and
>>>> when you call "sink.getType()" you get the NPE. Is this a
known bug.
>>>>
>>>> public static void readLeftTuples(MarshallerReaderContext context)
>>>> throws IOException,
>>>>
>>>> ClassNotFoundException {
>>>> ObjectInputStream stream = context.stream;
>>>>
>>>> while ( stream.readShort() == PersisterEnums.LEFT_TUPLE ) {
>>>> int nodeId = stream.readInt();
>>>> LeftTupleSink sink = (LeftTupleSink) context.sinks.get(
>>>> nodeId );
>>>> int factHandleId = stream.readInt();
>>>> LeftTuple leftTuple = new LeftTuple( context.handles.get(
>>>> factHandleId ),
>>>> sink,
>>>> true );
>>>> readLeftTuple( leftTuple,
>>>> context );
>>>> }
>>>> }
>>>>
>>>> public static void readLeftTuple(LeftTuple parentLeftTuple,
>>>> MarshallerReaderContext context)
>>>> throws IOException,
>>>>
>>>> ClassNotFoundException {
>>>> ObjectInputStream stream = context.stream;
>>>> Map<Integer, BaseNode> sinks = context.sinks;
>>>>
>>>> LeftTupleSink sink = parentLeftTuple.getLeftTupleSink();
>>>>
>>>> switch ( sink.getType() ) {
>>>>
>>>>
>>>> On May 24, 2011, at 9:06 AM, Edson Tirelli wrote:
>>>>
>>>>
>>>> Shannon,
>>>>
>>>> What is the following method doing?
>>>>
>>>> engine.process(reading);
>>>>
>>>> Can you please open a JIRA and attach your test case or point me to
>>>> the jira reporting this problem if it exists already?
>>>>
>>>> Thanks,
>>>> Edson
>>>>
>>>>
>>>> 2011/5/23 Shannon Hastings <shannon.hastings(a)inventrio.com>
>>>>
>>>>> I am using drools 5.2.0.M2 and I still get this error:
>>>>>
>>>>> Caused by: java.lang.NullPointerException
>>>>> at
>>>>>
org.drools.marshalling.impl.InputMarshaller.readLeftTuple(InputMarshaller.java:469)
>>>>>
>>>>> Which was reported on drools 5.1.0 JIRA and claimed to be fixed. I
>>>>> see the error when trying to load a session that was persisted that
had
>>>>> objects inserted that are time depended and cause rules to fire that
use
>>>>> terms from flow such as "after". I only see this error if
create a new
>>>>> session, submit some facts to it, close it, and then try to reload.
If i do
>>>>> not submit any facts to it I do not get the error. I.E. If all i do
is
>>>>> create the KB with my rules I can reload a session from the DB no
problem,
>>>>> but if i submit some facts and persist the session, then i cannot
reload it.
>>>>> This seems to be an issue with the JPA loading of the session that
has
>>>>> facts in it that use Flow (JBPM). Any help would be greatly
appreciated.
>>>>> Below are my simple rules followed by the test code used to submit
the
>>>>> facts:
>>>>>
>>>>> package com.inventrio.rules.readings
>>>>>
>>>>> import com.inventrio.healthmonitoring.model.*;
>>>>>
>>>>> declare Reading
>>>>> @role(event)
>>>>> @timestamp(readingTime)
>>>>> end
>>>>>
>>>>> rule "High Blood Pressure"
>>>>> when
>>>>> $eventA : Reading(readingType.name == "BPMETER")
>>>>> $systolic : Value( this.valueType.name == "SYSTOLIC" )
from$eventA.values
>>>>> $diastolic : Value( this.valueType.name == "DIASTOLIC" )
from$eventA.values
>>>>> eval( $systolic.getLongValue() > 180 &&
$diastolic.getLongValue() >
>>>>> 120 )
>>>>> then
>>>>> System.out.println("HIGH BLOOD PRESSURE" );
>>>>> end
>>>>>
>>>>> rule "Weight Trending Up"
>>>>> when
>>>>> $eventC : Reading(readingType.name == "WEIGHT" )
>>>>> $eventB : Reading( readingType.name == "WEIGHT" , this
after[5s,
>>>>> 1m] $eventC )
>>>>> $eventA : Reading( readingType.name == "WEIGHT" , this
after[5s,
>>>>> 1m] $eventB )
>>>>> $weight3 : Value( this.valueType.name == "WEIGHT" )
from$eventC.values
>>>>> $weight2 : Value( this.valueType.name == "WEIGHT" )
from$eventB.values
>>>>> $weight1 : Value( this.valueType.name == "WEIGHT" )
from$eventA.values
>>>>> eval( $weight3.getDoubleValue().doubleValue() <
>>>>> $weight2.getDoubleValue().doubleValue() + 1.0 &&
>>>>> $weight2.getDoubleValue().doubleValue() <
>>>>> $weight1.getDoubleValue().doubleValue() + 1.0 )
>>>>> then
>>>>> System.out.println("WEIGHT IS GOING UP" );
>>>>> end
>>>>>
>>>>> rule "Weight Trending Down"
>>>>> when
>>>>> $eventC : Reading(readingType.name == "WEIGHT" )
>>>>> $eventB : Reading( readingType.name == "WEIGHT" , this
after[5s,
>>>>> 1m] $eventC )
>>>>> $eventA : Reading( readingType.name == "WEIGHT" , this
after[5s,
>>>>> 1m] $eventB )
>>>>> $weight3 : Value( this.valueType.name == "WEIGHT" )
from$eventC.values
>>>>> $weight2 : Value( this.valueType.name == "WEIGHT" )
from$eventB.values
>>>>> $weight1 : Value( this.valueType.name == "WEIGHT" )
from$eventA.values
>>>>> eval( $weight3.getDoubleValue().doubleValue() >
>>>>> $weight2.getDoubleValue().doubleValue() + 1.0 &&
>>>>> $weight2.getDoubleValue().doubleValue() >
>>>>> $weight1.getDoubleValue().doubleValue() + 1.0 )
>>>>> then
>>>>> System.out.println("WEIGHT IS GOING DOWN" );
>>>>> end
>>>>>
>>>>>
>>>>>
>>>>> And next is my object i insert before closeing and then trying to
>>>>> reload the session.
>>>>>
>>>>> public void testWeightRules() {
>>>>> try {
>>>>>
>>>>> Reading reading = new Reading();
>>>>> reading.setReadingTime(new Date(System.currentTimeMillis()));
>>>>> ReadingType type = new ReadingType();
>>>>> type.setName("WEIGHT");
>>>>> type.setDescription("");
>>>>> reading.setReadingType(type);
>>>>> Value value = new Value();
>>>>> value.setDoubleValue(140.0);
>>>>> ValueType valueType = new ValueType();
>>>>> valueType.setName("WEIGHT");
>>>>> valueType.setDataType(ValueDataType.DOUBLE);
>>>>> value.setValueType(valueType);
>>>>> reading.getValues().add(value);
>>>>> reading.setReadingType(type);
>>>>> engine.process(reading);
>>>>>
>>>>> Thread.sleep(7000);
>>>>>
>>>>> reading = new Reading();
>>>>> reading.setReadingTime(new Date(System.currentTimeMillis()));
>>>>> type = new ReadingType();
>>>>> type.setName("WEIGHT");
>>>>> type.setDescription("");
>>>>> reading.setReadingType(type);
>>>>> value = new Value();
>>>>> value.setDoubleValue(142.0);
>>>>> valueType = new ValueType();
>>>>> valueType.setName("WEIGHT");
>>>>> valueType.setDataType(ValueDataType.DOUBLE);
>>>>> value.setValueType(valueType);
>>>>> reading.getValues().add(value);
>>>>> reading.setReadingType(type);
>>>>> engine.process(reading);
>>>>>
>>>>> Thread.sleep(7000);
>>>>>
>>>>> reading = new Reading();
>>>>> reading.setReadingTime(new Date(System.currentTimeMillis()));
>>>>> type = new ReadingType();
>>>>> type.setName("WEIGHT");
>>>>> type.setDescription("");
>>>>> reading.setReadingType(type);
>>>>> value = new Value();
>>>>> value.setDoubleValue(144.0);
>>>>> valueType = new ValueType();
>>>>> valueType.setName("WEIGHT");
>>>>> valueType.setDataType(ValueDataType.DOUBLE);
>>>>> value.setValueType(valueType);
>>>>> reading.getValues().add(value);
>>>>> reading.setReadingType(type);
>>>>> engine.process(reading);
>>>>>
>>>>> } catch (Throwable t) {
>>>>> t.printStackTrace();
>>>>> }
>>>>> }
>>>>>
>>>>> Shannon Hastings
>>>>>
>>>>> Inventrio
>>>>> 545 Metro Place South, Suite 475
>>>>> Dublin, OH 43017
>>>>> *Phone*: (614) 389-2795 x101
>>>>> *Fax:* (614) 522-6249
>>>>> *Email:* shannon.hastings(a)inventrio.com
>>>>>
http://www.inventrio.com
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> rules-users mailing list
>>>>> rules-users(a)lists.jboss.org
>>>>>
https://lists.jboss.org/mailman/listinfo/rules-users
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> Edson Tirelli
>>>> JBoss Drools Core Development
>>>> JBoss by Red Hat @
www.jboss.com
>>>> _______________________________________________
>>>> rules-users mailing list
>>>> rules-users(a)lists.jboss.org
>>>>
https://lists.jboss.org/mailman/listinfo/rules-users
>>>>
>>>>
>>>> Shannon Hastings
>>>>
>>>> Inventrio
>>>> 545 Metro Place South, Suite 475
>>>> Dublin, OH 43017
>>>> *Phone*: (614) 389-2795 x101
>>>> *Fax:* (614) 522-6249
>>>> *Email:* shannon.hastings(a)inventrio.com
>>>>
http://www.inventrio.com
>>>>
>>>>
>>>> _______________________________________________
>>>> rules-users mailing list
>>>> rules-users(a)lists.jboss.org
>>>>
https://lists.jboss.org/mailman/listinfo/rules-users
>>>>
>>>>
>>>
>>>
>>> --
>>> - CTO @
http://www.plugtree.com
>>> - MyJourney @
http://salaboy.wordpress.com
>>> - Co-Founder @
http://www.jbug.com.ar
>>>
>>> - Salatino "Salaboy" Mauricio -
>>> _______________________________________________
>>> rules-users mailing list
>>> rules-users(a)lists.jboss.org
>>>
https://lists.jboss.org/mailman/listinfo/rules-users
>>>
>>>
>>> Shannon Hastings
>>>
>>> Inventrio
>>> 545 Metro Place South, Suite 475
>>> Dublin, OH 43017
>>> *Phone*: (614) 389-2795 x101
>>> *Fax:* (614) 522-6249
>>> *Email:* shannon.hastings(a)inventrio.com
>>>
http://www.inventrio.com
>>>
>>>
>>> _______________________________________________
>>> rules-users mailing list
>>> rules-users(a)lists.jboss.org
>>>
https://lists.jboss.org/mailman/listinfo/rules-users
>>>
>>>
>>
>>
>> --
>> - CTO @
http://www.plugtree.com
>> - MyJourney @
http://salaboy.wordpress.com
>> - Co-Founder @
http://www.jbug.com.ar
>>
>> - Salatino "Salaboy" Mauricio -
>> _______________________________________________
>> rules-users mailing list
>> rules-users(a)lists.jboss.org
>>
https://lists.jboss.org/mailman/listinfo/rules-users
>>
>>
>> Shannon Hastings
>>
>> Inventrio
>> 545 Metro Place South, Suite 475
>> Dublin, OH 43017
>> *Phone*: (614) 389-2795 x101
>> *Fax:* (614) 522-6249
>> *Email:* shannon.hastings(a)inventrio.com
>>
http://www.inventrio.com
>>
>>
>> _______________________________________________
>> rules-users mailing list
>> rules-users(a)lists.jboss.org
>>
https://lists.jboss.org/mailman/listinfo/rules-users
>>
>>
>
>
> --
> - CTO @
http://www.plugtree.com
> - MyJourney @
http://salaboy.wordpress.com
> - Co-Founder @
http://www.jbug.com.ar
>
> - Salatino "Salaboy" Mauricio -
> _______________________________________________
> rules-users mailing list
> rules-users(a)lists.jboss.org
>
https://lists.jboss.org/mailman/listinfo/rules-users
>
>
> Shannon Hastings
>
> Inventrio
> 545 Metro Place South, Suite 475
> Dublin, OH 43017
> *Phone*: (614) 389-2795 x101
> *Fax:* (614) 522-6249
> *Email:* shannon.hastings(a)inventrio.com
>
http://www.inventrio.com
>
>
> _______________________________________________
> rules-users mailing list
> rules-users(a)lists.jboss.org
>
https://lists.jboss.org/mailman/listinfo/rules-users
>
>
--
- CTO @
http://www.plugtree.com
- MyJourney @
http://salaboy.wordpress.com
- Co-Founder @
http://www.jbug.com.ar
- Salatino "Salaboy" Mauricio -
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
Shannon Hastings
Inventrio
545 Metro Place South, Suite 475
Dublin, OH 43017
*Phone*: (614) 389-2795 x101
*Fax:* (614) 522-6249
*Email:* shannon.hastings(a)inventrio.com
http://www.inventrio.com
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users