Hello,

I have got an issue with the KnowledgeAgent that seems not to survive a Guvnor 
restart. The scenario is as follows:

* We use Drools 5.0 
* On our application server we create a KnowledgeAgent 
applying a ChangeSet that points to a package binary on a separate Guvnor 
server 
like so:

        SystemEventListenerFactory.setSystemEventListener(new 
        SystemEventLogger()); 
        ResourceFactory.getResourceChangeNotifierService().start(); 
        ResourceFactory.getResourceChangeScannerService().start(); 
        KnowledgeAgent agent = 
        KnowledgeAgentFactory.newKnowledgeAgent(workflowName); 
        agent.applyChangeSet(changeSet);

* Creating the kbase, registering globals and running sessions works fine. 
* We shut down Guvnor (or the connection goes down, this was how we spotted the 
problem) and restart it after a minute 
* We then try to run sessions from the 
same agent as above via 
        kagent.getKnowledgeBase().newStatefulKnowledgeSession(); 
which returns a ksession, but then setting a global we get

  java.lang.RuntimeException: Unexpected global [log]   
  at 
  org.drools.common.AbstractWorkingMemory.setGlobal(AbstractWorkingMemory.java:5
  50) 
  at 
  org.drools.impl.StatefulKnowledgeSessionImpl.setGlobal(StatefulKnowledgeSessio
  nImpl.java:284)

>From the debugger I can see that indeed the ruleBase's globals map is empty. 
>The 
SystemEventLogger indicates that the KnowledgeAgent unsubscribes from its 
resource when Guvnor is down and rebuilds its kbase. Also, it stops scanning 
the 
resource and does not find it once Guvnor is up again. (See log snippet below).
 
Wouldn't it be better in these cases to keep the resource as is in memory and 
try to rescan? I figure that as long as the resource is specified in the 
changeSet it should be considered part of the kbase and not be removed if it 
cannot be found. 

For the time being, does anyone have a suggestion how to avoid these problems? 
We could catch the RuntimeException and recreate the KnowledgeAgent, but 
perhaps 
there is a better way?

Thanks, Gerret


-- SystemEventLog -- 
# Guvnor is up here 
07:58:01,881 ResourceChangeScanner attempt to scan 1 resources 
07:58:02,209 ResourceChangeScanner thread is waiting for 60 
07:58:15,067 ResourceChangeScanner attempt to scan 1 resources 
# Guvnor goes down here 
07:58:16,738 ResourceChangeScanner removed resource=[UrlResource 
path='http://localhost:7080/drools-
guvnor/org.drools.guvnor.Guvnor/package/com.foo.bar/LATEST'] 
07:58:16,738 ResourceChangeNotification received ChangeSet notification 
07:58:16,738 ResourceChangeScanner thread is waiting for 60 
07:58:16,738  ResourceChangeNotification processing ChangeSet 
07:58:16,738 ResourceChangeNotification ChangeSet removed resource=[UrlResource 
path='http://localhost:7080/drools-
guvnor/org.drools.guvnor.Guvnor/package/com.foo.bar/LATEST'] for 
listener=org.drools.agent.impl.knowledgeagenti...@1053d6d 
07:58:16,738 ResourceChangeNotification ChangeSet removed resource=[UrlResource 
path='http://localhost:7080/drools-
guvnor/org.drools.guvnor.Guvnor/package/com.foo.bar/LATEST'] for 
listener=org.drools.agent.impl.knowledgeagenti...@b71c17 
07:58:16,738 KnowledgeAgent received ChangeSet changed notification 
07:58:16,738 KnowledgeAgent received ChangeSet changed notification 
07:58:16,738 KnowledgAgent applying ChangeSet 
07:58:16,738 ResourceChangeNotification thread is waiting for queue update 
07:58:16,738 KnowledgAgent applying ChangeSet 
07:58:16,738 KnowledgeAgent unsubscribing from resource=[UrlResource 
path='http://localhost:7080/drools-
guvnor/org.drools.guvnor.Guvnor/package/com.foo.bar/LATEST'] 
07:58:16,738 ResourceChangeNotification unsubscribing 
listener=org.drools.agent.impl.knowledgeagenti...@1053d6d to 
resource=[UrlResource path='http://localhost:7080/drools-
guvnor/org.drools.guvnor.Guvnor/package/com.foo.bar/LATEST'] 
07:58:16,738 KnowledgeAgent rebuilding KnowledgeBase using ChangeSet 
07:58:16,738 KnowledgeAgent unsubscribing from resource=[UrlResource 
path='http://localhost:7080/drools-
guvnor/org.drools.guvnor.Guvnor/package/com.foo.bar/LATEST'] 
07:58:16,738 ResourceChangeNotification unsubscribing 
listener=org.drools.agent.impl.knowledgeagenti...@b71c17 to 
resource=[UrlResource path='http://localhost:7080/drools-
guvnor/org.drools.guvnor.Guvnor/package/com.foo.bar/LATEST'] 
07:58:16,738 
KnowledgeAgent rebuilding KnowledgeBase using ChangeSet 
07:58:16,738 KnowledgeAgent new KnowledgeBase now built and in use 
07:58:16,738 KnowledgeAgent new KnowledgeBase now built and in use 
07:59:02,202 ResourceChangeScanner attempt to scan 0 resources 
07:59:02,202 ResourceChangeScanner thread is waiting for 60 
# Guvnor back up here 
07:59:16,731 ResourceChangeScanner attempt to scan 0 resources 
07:59:16,731 ResourceChangeScanner thread is waiting for 60

-- 
Nur noch bis 31.01.2010: DSL-Komplettpaket für 16,99 Euro/mtl.!*
http://portal.gmx.net/de/go/dsl02
_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users

Reply via email to