]
Roger Lefebvre edited comment on DROOLS-422 at 5/27/14 7:26 PM:
----------------------------------------------------------------
Hi,
My situation is somewhat similar in that an interval rule is involved. The difference is
that I'm running 6.1.0.Beta3 and the exception is not a NPE but an
IllegalStatementException.
If this is an entirely different issue, I can enter another ticket. The stack trace is as
follows:
Exception in thread "main"
org.springframework.beans.factory.BeanCreationException: Error creating bean with name
'campaignHandler': Invocation of init method failed; nested exception is
java.lang.IllegalStateException: java.lang.reflect.InvocationTargetException
at
org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:136)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:407)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1545)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475)
at
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:304)
at
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228)
at
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:300)
at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:195)
at
org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:703)
at
org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932)
at
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479)
at com.s.c.u.ConfigUtility.loadProfileContext(ConfigUtility.java:42)
at com.s.c.m.CallManagerMain.init(CallManagerMain.java:19)
at com.splice.c.m.CallManagerMain.main(CallManagerMain.java:46)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
Caused by: java.lang.IllegalStateException: java.lang.reflect.InvocationTargetException
at
org.drools.persistence.jpa.KnowledgeStoreServiceImpl.buildCommandService(KnowledgeStoreServiceImpl.java:137)
at
org.drools.persistence.jpa.KnowledgeStoreServiceImpl.loadKieSession(KnowledgeStoreServiceImpl.java:90)
at
org.drools.persistence.jpa.KnowledgeStoreServiceImpl.loadKieSession(KnowledgeStoreServiceImpl.java:39)
at com.s.c.m.CampaignCallHandler.loadSession(CampaignCallHandler.java:64)
at com.s.c.m.CampaignCallHandler.initFactEngine(CampaignCallHandler.java:50)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at
org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:349)
at
org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:300)
at
org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:133)
... 19 more
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:122)
... 30 more
Caused by: java.lang.RuntimeException: Unable to load session snapshot
at
org.drools.persistence.SessionMarshallingHelper.loadSnapshot(SessionMarshallingHelper.java:88)
at
org.drools.persistence.SingleSessionCommandService.initExistingKnowledgeSession(SingleSessionCommandService.java:239)
at
org.drools.persistence.SingleSessionCommandService.<init>(SingleSessionCommandService.java:172)
... 35 more
Caused by: java.lang.IllegalStateException: Trigger.nextFireTime is not increasing
at org.drools.core.phreak.PhreakTimerNode.scheduleTimer(PhreakTimerNode.java:305)
at org.drools.core.phreak.PhreakTimerNode.access$000(PhreakTimerNode.java:49)
at org.drools.core.phreak.PhreakTimerNode$1.schedule(PhreakTimerNode.java:242)
at
org.drools.core.phreak.PhreakTimerNode$TimerNodeTimerInputMarshaller.deserialize(PhreakTimerNode.java:599)
at
org.drools.core.marshalling.impl.ProtobufInputMarshaller.readTimer(ProtobufInputMarshaller.java:700)
at
org.drools.core.marshalling.impl.ProtobufInputMarshaller.readSession(ProtobufInputMarshaller.java:282)
at
org.drools.core.marshalling.impl.ProtobufInputMarshaller.readSession(ProtobufInputMarshaller.java:155)
at
org.drools.core.marshalling.impl.ProtobufMarshaller.unmarshall(ProtobufMarshaller.java:110)
at
org.drools.core.marshalling.impl.ProtobufMarshaller.unmarshall(ProtobufMarshaller.java:54)
at
org.drools.persistence.SessionMarshallingHelper.loadSnapshot(SessionMarshallingHelper.java:83)
... 37 more
was (Author: rogeral):
Hi,
My situation is somewhat similar in that it an interval rule is involved. The difference
is that I'm running 6.1.0.Beta3 and the exception is not a NPE but an
IllegalStatementException.
If this is an entirely different issue, I can enter another ticket. The stack trace is as
follows:
Exception in thread "main"
org.springframework.beans.factory.BeanCreationException: Error creating bean with name
'campaignHandler': Invocation of init method failed; nested exception is
java.lang.IllegalStateException: java.lang.reflect.InvocationTargetException
at
org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:136)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:407)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1545)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475)
at
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:304)
at
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228)
at
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:300)
at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:195)
at
org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:703)
at
org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932)
at
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479)
at com.s.c.u.ConfigUtility.loadProfileContext(ConfigUtility.java:42)
at com.s.c.m.CallManagerMain.init(CallManagerMain.java:19)
at com.splice.c.m.CallManagerMain.main(CallManagerMain.java:46)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
Caused by: java.lang.IllegalStateException: java.lang.reflect.InvocationTargetException
at
org.drools.persistence.jpa.KnowledgeStoreServiceImpl.buildCommandService(KnowledgeStoreServiceImpl.java:137)
at
org.drools.persistence.jpa.KnowledgeStoreServiceImpl.loadKieSession(KnowledgeStoreServiceImpl.java:90)
at
org.drools.persistence.jpa.KnowledgeStoreServiceImpl.loadKieSession(KnowledgeStoreServiceImpl.java:39)
at com.s.c.m.CampaignCallHandler.loadSession(CampaignCallHandler.java:64)
at com.s.c.m.CampaignCallHandler.initFactEngine(CampaignCallHandler.java:50)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at
org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:349)
at
org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:300)
at
org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:133)
... 19 more
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:122)
... 30 more
Caused by: java.lang.RuntimeException: Unable to load session snapshot
at
org.drools.persistence.SessionMarshallingHelper.loadSnapshot(SessionMarshallingHelper.java:88)
at
org.drools.persistence.SingleSessionCommandService.initExistingKnowledgeSession(SingleSessionCommandService.java:239)
at
org.drools.persistence.SingleSessionCommandService.<init>(SingleSessionCommandService.java:172)
... 35 more
Caused by: java.lang.IllegalStateException: Trigger.nextFireTime is not increasing
at org.drools.core.phreak.PhreakTimerNode.scheduleTimer(PhreakTimerNode.java:305)
at org.drools.core.phreak.PhreakTimerNode.access$000(PhreakTimerNode.java:49)
at org.drools.core.phreak.PhreakTimerNode$1.schedule(PhreakTimerNode.java:242)
at
org.drools.core.phreak.PhreakTimerNode$TimerNodeTimerInputMarshaller.deserialize(PhreakTimerNode.java:599)
at
org.drools.core.marshalling.impl.ProtobufInputMarshaller.readTimer(ProtobufInputMarshaller.java:700)
at
org.drools.core.marshalling.impl.ProtobufInputMarshaller.readSession(ProtobufInputMarshaller.java:282)
at
org.drools.core.marshalling.impl.ProtobufInputMarshaller.readSession(ProtobufInputMarshaller.java:155)
at
org.drools.core.marshalling.impl.ProtobufMarshaller.unmarshall(ProtobufMarshaller.java:110)
at
org.drools.core.marshalling.impl.ProtobufMarshaller.unmarshall(ProtobufMarshaller.java:54)
at
org.drools.persistence.SessionMarshallingHelper.loadSnapshot(SessionMarshallingHelper.java:83)
... 37 more
Timer based rules don't fire and facts can't expire after
session restore
-------------------------------------------------------------------------
Key: DROOLS-422
URL:
https://issues.jboss.org/browse/DROOLS-422
Project: Drools
Issue Type: Bug
Security Level: Public(Everyone can see)
Affects Versions: 5.5.0.Final
Environment: Linux Mint 15
JBoss AS 5.1
Reporter: Nedo Nedic
Assignee: Mark Proctor
Attachments: drools-mongodb-persistence.zip
I have implemented a custom persistence engine for Drools sessions in MongoDB. When
session is built for first time, everything works like a charm. I am having some problems
when Drools sessions are restored from MongoDB collection. Firstly, interval based rules
(for example timer(int: 10s 10s)) don't fire. Some facts that should expire, they just
don't expire and remain forever in WM. I attached the source code. When session is
built for first time, I use code like this:
KnowledgeBase kbase = createKBase(getKnowledgeBuilder(rulePackagePath),
config);
if (hasKnowledgeAgent) {
createKnowledgeAgent(kbase, correlatorId);
wm = (ReteooStatefulSession) ((KnowledgeBaseImpl) kagent
.getKnowledgeBase()).ruleBase.newStatefulSession(
(SessionConfiguration) ksconf, env);
ksession = new StatefulKnowledgeSessionImpl(wm, kagent
.getKnowledgeBase());
stateOutputMarshaller = StateMarshallerFactory.newOutputMarshaller(this, ksession,
ksconf);
stateOutputMarshaller.init();
((InternalKnowledgeRuntime) ksession).setEndOperationListener(this);
}
Then, after every action I update the session in MongoDB collection.
public void endOperation(InternalKnowledgeRuntime ikr) {
stateOutputMarshaller.marshall();
}
For session restoring, after AS restart I use this code:
KnowledgeBase kbase = createKBase( getKnowledgeBuilder(rulePackagePath), getKBaseConfig()
);
stateInputMarshaller = StateMarshallerFactory.newInputMarshaller( this, kbase,
getSessionConf() );
ksession = stateInputMarshaller.unmarshall(correlatorId);
stateOutputMarshaller = StateMarshallerFactory.newOutputMarshaller( this, ksession,
getSessionConf() );
((InternalKnowledgeRuntime)ksession).setEndOperationListener(this);
protected static KnowledgeBaseConfiguration getKBaseConfig() {
KnowledgeBaseConfiguration config = KnowledgeBaseFactory
.newKnowledgeBaseConfiguration();
config.setOption(EventProcessingOption.STREAM);
return config;
}
protected static KnowledgeSessionConfiguration getSessionConf() {
KnowledgeSessionConfiguration ksconf =
KnowledgeBaseFactory.newKnowledgeSessionConfiguration();
ksconf.setOption(ClockTypeOption.get("realtime"));
return ksconf;
}
Any help is appreciated.
Thanks