<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<div class="moz-cite-prefix">Dear Davide<br>
<br>
thank you very much for looking into this.<br>
I was wondering, are these kind of bugs also there in the
commercial edition or is that a completely different
implementation?<br>
<br>
Kind Regards,<br>
De Rooms Brecht<br>
<br>
Op 19/09/2013 10:46, Davide Sottara schreef:<br>
</div>
<blockquote cite="mid:523AB9EC.2090404@gmail.com" type="cite">
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
<div class="moz-cite-prefix">It is a bug, the KA can detect
compilation errors in resources, but will not capture runtime
exceptions.<br>
I have opened a ticket, It will be fixed in 5.6 and 6.x<br>
Davide<br>
<br>
On 09/17/2013 01:51 PM, De Rooms Brecht wrote:<br>
</div>
<blockquote cite="mid:5238C0C3.6040905@vub.ac.be" type="cite">
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
<div class="moz-cite-prefix">
<pre wrap="">Dear Drools users,</pre>
Apparently it was not caused by the previously mentioned fix.
Sometimes I still had a KnowledgeAgent in my server that
doesn't respond anymore which seems to be caused by a mistake
in the DRL file.<br>
I started to investigate the source code of KnowledgeAgentImpl
and KnowledgeBaseImpl and recompiled them to add some prints.
Finally I tracked it until AbstractRuleBase.addPackages.<br>
<br>
There is a giant Try-final block and I noticed by adding
prints that it stopped somewhere in the middle. When it does
fail, my KnowledgeAgent stops working completely.<br>
The try-final seemed to be the only place for me where an
exception might be ignored so I added a catch clause.<br>
As a result, the error report of my drl file was nicely
printed and my agent didn't crash: <br>
<br>
<b><small>org.drools.RuntimeDroolsException: Unable to resolve
class 'int' for global 'RULES_MATCHED'<br>
at
org.drools.common.AbstractRuleBase.mergePackage(AbstractRuleBase.java:818)<br>
at
org.drools.common.AbstractRuleBase.addPackages(AbstractRuleBase.java:615)<br>
at
org.drools.reteoo.ReteooRuleBase.addPackages(ReteooRuleBase.java:472)<br>
at
org.drools.impl.KnowledgeBaseImpl.addKnowledgePackages(KnowledgeBaseImpl.java:153)<br>
at
org.drools.agent.impl.KnowledgeAgentImpl.addResourcesToKnowledgeBase(KnowledgeAgentImpl.java:1173)<br>
at
org.drools.agent.impl.KnowledgeAgentImpl.incrementalBuildResources(KnowledgeAgentImpl.java:1058)<br>
at
org.drools.agent.impl.KnowledgeAgentImpl.buildKnowledgeBase(KnowledgeAgentImpl.java:738)<br>
at
org.drools.agent.impl.KnowledgeAgentImpl.applyChangeSet(KnowledgeAgentImpl.java:259)<br>
at
org.drools.agent.impl.KnowledgeAgentImpl$ChangeSetNotificationDetector.run(KnowledgeAgentImpl.java:1357)<br>
at
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)<br>
at
java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)<br>
at
java.util.concurrent.FutureTask.run(FutureTask.java:166)<br>
at
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)<br>
at
java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)<br>
at
java.util.concurrent.FutureTask.run(FutureTask.java:166)<br>
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)<br>
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)<br>
at java.lang.Thread.run(Thread.java:722)<br>
</small></b><br>
Maybe there is a reason for this missing catch so I am not
sure whether I fixed it and broke something else ( eg. maybe I
should undo a part of the operations before I continue).<br>
Is there anyone who knows this code and who can help me?<br>
<br>
Extra information:<br>
- I use Drools 5.5 from the Maven repository.<br>
- my agent configuration:<br>
agentConf.setProperty("drools.agent.newInstance", "false");<br>
agentConf.setProperty("drools.agent.useKBaseClassLoaderForCompiling",
"true");<br>
<br>
<br>
Kind Regards,<br>
De Rooms Brecht<br>
<br>
Op 31/07/2013 14:45, De Rooms Brecht schreef:<br>
</div>
<blockquote cite="mid:51F906DF.5090104@vub.ac.be" type="cite">
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
<div class="moz-cite-prefix">The bug was caused by one of the
InputStreams that was not closed properly which caused the
knowledgeAgent to block. <br>
I think my issues are solved now. <br>
<br>
Thanks for looking into this.<br>
Kind Regards,<br>
<br>
Op 31/07/2013 14:19, De Rooms Brecht schreef:<br>
</div>
<blockquote cite="mid:51F900C5.2000900@vub.ac.be" type="cite">
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
<div class="moz-cite-prefix">Hello David and thanks for
responding.<br>
I know it supports these event listeners and I use them.
In my program, I have two knowledge agents and the first
one (preprocessing) will read the file, preprocess a DRL
and then write a second modified DRL file in a folder that
is monitored by the second one. When I modify the original
DRL file <b>(1.</b> in prints below<b>)</b> monitored by
the preprocessing agent, everything works fine and the
rule is triggered<b> (</b><b>2.)</b>. However, when I
delete a file <b> (</b><b>3.)</b>, the knowledgeAgent
just blocks after AfterChangeSetAppliedEvent and does not
do anything anymore.. If I send new data in the
knowledgeAgent it does not react anymore. <br>
<br>
I would expect to get a stacktrace of what went wrong but
I do not get any info besides of the systemeventlistener
or knowledgeagentlistener. Is there any way I can get a
stacktrace?<br>
Kind Regards,<br>
De Rooms Brecht<br>
<br>
<u><b>1. Resources Changed => Modified: [[FileResource
file='knowledge\realtimeKnowledge\test.brules.testRule.drl']]</b></u><br>
<small><i> eventListener 1:::
==>[BeforeResourceProcessedEvent(RESOURCE_REMOVED):
[FileResource
file='knowledge\realtimeKnowledge\test.brules.testRule.drl']]</i><i><br>
</i><i> eventListener 1:::
==>[AfterResourceProcessedEvent(RESOURCE_REMOVED):
[FileResource
file='knowledge\realtimeKnowledge\test.brules.testRule.drl']]</i><i><br>
</i><i> eventListener 1:::
==>[AfterChangeSetProcessedEvent:
ChangeSetImpl{resourcesRemoved=[], resourcesAdded=[],
resourcesModified=[[FileResource
file='knowledge\realtimeKnowledge\test.brules.testRule.drl']],
knowledgeDefinitionsRemoved=[]}]</i><i><br>
</i><i> eventListener 1:::
==>[ResourceCompilationFailedEvent:
org.drools.builder.impl.KnowledgeBuilderImpl@70d0d127]</i><i><br>
</i><i> eventListener 1:::
==>[KnowledgeBaseUpdatedEvent:
org.drools.impl.KnowledgeBaseImpl@49669be]</i><i><br>
</i><i> eventListener 1:::
==>[AfterChangeSetAppliedEvent:
ChangeSetImpl{resourcesRemoved=[], resourcesAdded=[],
resourcesModified=[[FileResource
file='knowledge\realtimeKnowledge\test.brules.testRule.drl']],
knowledgeDefinitionsRemoved=[]}]</i><i><br>
</i><i> eventListener 2:::
==>[BeforeChangeSetAppliedEvent:
ChangeSetImpl{resourcesRemoved=[], resourcesAdded=[],
resourcesModified=[[FileResource
file='knowledge\packaged\test.brules.testRule.drl']],
knowledgeDefinitionsRemoved=[]}]</i><i><br>
</i><i> eventListener 2:::
==>[BeforeResourceProcessedEvent(RESOURCE_REMOVED):
[FileResource
file='knowledge\packaged\test.brules.testRule.drl']]</i><i><br>
</i><i> eventListener 2:::
==>[AfterResourceProcessedEvent(RESOURCE_REMOVED):
[FileResource
file='knowledge\packaged\test.brules.testRule.drl']]</i><i><br>
</i><i> eventListener 2:::
==>[AfterChangeSetProcessedEvent:
ChangeSetImpl{resourcesRemoved=[], resourcesAdded=[],
resourcesModified=[[FileResource
file='knowledge\packaged\test.brules.testRule.drl']],
knowledgeDefinitionsRemoved=[]}]</i><i><br>
</i><i> eventListener 2:::
==>[KnowledgeBaseUpdatedEvent:
org.drools.impl.KnowledgeBaseImpl@11c834d1]</i></small><br>
<br>
<u><b>2. Rules are triggered when the PKG file its
knowledge is updated:</b></u><br>
<small><i> Changed This Rule::: Got Event: TestEvent(
number=5, message=doesDynamicEventTypeWork? )</i><i><br>
</i><i> Changed This Rule::: Got Event: TestEvent(
number=4, message=doesDynamicEventTypeWork? )</i><i><br>
</i><i> Changed This Rule::: Got Event: TestEvent(
number=2, message=doesDynamicEventTypeWork? )</i><i><br>
</i><i> Changed This Rule::: Got Event: TestEvent(
number=1, message=doesDynamicEventTypeWork? )</i><i><br>
</i><i> Changed This Rule::: Got Event: TestEvent(
number=2, message=doesDynamicEventTypeWork? )</i><i><br>
</i><i> Changed This Rule::: Got Event: TestEvent(
number=1, message=doesDynamicEventTypeWork? )</i><i><br>
</i><i> Changed This Rule::: Got Event: TestEvent(
number=2, message=doesDynamicEventTypeWork? )</i><i><br>
</i><i> Changed This Rule::: Got Event: TestEvent(
number=1, message=doesDynamicEventTypeWork? )</i><i><br>
</i><i><br>
</i><i> eventListener 2:::
==>[AfterChangeSetAppliedEvent:
ChangeSetImpl{resourcesRemoved=[], resourcesAdded=[],
resourcesModified=[[FileResource
file='knowledge\packaged\test.brules.testRule.drl']],
knowledgeDefinitionsRemoved=[]}]</i><i><br>
</i><i> eventListener 1:::
==>[BeforeChangeSetAppliedEvent:
ChangeSetImpl{resourcesRemoved=[[FileResource
file='knowledge\realtimeKnowledge\test.brules.testRule.drl']],
resourcesAdded=[],
resourcesModified=[], knowledgeDefinitionsRemoved=[]}]</i><i><br>
</i><i> eventListener 1:::
==>[BeforeChangeSetProcessedEvent:
ChangeSetImpl{resourcesRemoved=[[FileResource
file='knowledge\realtimeKnowledge\test.brules.testRule.drl']],
resourcesAdded=[], resourcesModified=[],
knowledgeDefinitionsRemoved=[]}]</i></small><br>
<br>
<br>
<u><b>3. </b></u><u><b>Resources Changed => </b></u><u><b>
Removed: [[FileResource
file='knowledge\realtimeKnowledge\test.brules.testRule.drl']]</b></u><br>
<small><i> eventListener 1:::
==>[BeforeResourceProcessedEvent(RESOURCE_MODIFIED):
[FileResource
file='knowledge\realtimeKnowledge\test.brules.testRule.drl']]</i><i><br>
</i><i> eventListener 1:::
==>[AfterResourceProcessedEvent(RESOURCE_MODIFIED):
[FileResource
file='knowledge\realtimeKnowledge\test.brules.testRule.drl']]</i><i><br>
</i><i> eventListener 1:::
==>[AfterChangeSetProcessedEvent:
ChangeSetImpl{resourcesRemoved=[[FileResource
file='knowledge\realtimeKnowledge\test.brules.testRule.drl']],
resourcesAdded=[], resourcesModified=[],
knowledgeDefinitionsRemoved=[]}]</i><i><br>
</i><i> eventListener 1:::
==>[KnowledgeBaseUpdatedEvent:
org.drools.impl.KnowledgeBaseImpl@49669be]</i><i><br>
</i><i> eventListener 1:::
==>[AfterChangeSetAppliedEvent:
ChangeSetImpl{resourcesRemoved=[[FileResource
file='knowledge\realtimeKnowledge\test.brules.testRule.drl']],
resourcesAdded=[], resourcesModified=[],
knowledgeDefinitionsRemoved=[]}]</i></small><br>
<br>
<font color="#cc0000"> .... and then it was quiet....</font><br>
<br>
Op 31/07/2013 09:42, Davide Sottara schreef:<br>
</div>
<blockquote cite="mid:51F8BFFD.1030207@gmail.com"
type="cite">
<pre wrap="">The KA logs to a SystemEventListener, and supports a dedicated event
listener for
additions/updates/etc...
You can do:
kagent.setSystemEventListener( new PrintStreamSystemEventListener() );
kagent.addEventListener( new DebugKnowledgeAgentEventListener( ) );
On 07/30/2013 01:55 AM, De Rooms Brecht wrote:
</pre>
<blockquote type="cite">
<pre wrap="">Dear Drools users,
I have been testing with the KnowledgeAgent from version 5.4 and 5.5. It
monitors a changeset and is set to incrementally build the
knowledgebase. I noticed that it sometimes crashes but never throws out
errors. This happens for example when I define a type two times and when
I remove a file. Does anyone experience similar behaviour and has an
idea of how I could see the errors? I already tried to check the errors
by building it myself using a knowledgebuilder before I update the file
that the knowledgeAgent monitors but that's quite a dirty solution.
Kind Regards,
De Rooms Brecht
_______________________________________________
rules-users mailing list
<a moz-do-not-send="true" class="moz-txt-link-abbreviated" href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a>
<a moz-do-not-send="true" class="moz-txt-link-freetext" href="https://lists.jboss.org/mailman/listinfo/rules-users">https://lists.jboss.org/mailman/listinfo/rules-users</a>
</pre>
</blockquote>
<pre wrap="">_______________________________________________
rules-users mailing list
<a moz-do-not-send="true" class="moz-txt-link-abbreviated" href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a>
<a moz-do-not-send="true" class="moz-txt-link-freetext" href="https://lists.jboss.org/mailman/listinfo/rules-users">https://lists.jboss.org/mailman/listinfo/rules-users</a>
</pre>
</blockquote>
<br>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
rules-users mailing list
<a moz-do-not-send="true" class="moz-txt-link-abbreviated" href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a>
<a moz-do-not-send="true" class="moz-txt-link-freetext" href="https://lists.jboss.org/mailman/listinfo/rules-users">https://lists.jboss.org/mailman/listinfo/rules-users</a></pre>
</blockquote>
<br>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
rules-users mailing list
<a moz-do-not-send="true" class="moz-txt-link-abbreviated" href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a>
<a moz-do-not-send="true" class="moz-txt-link-freetext" href="https://lists.jboss.org/mailman/listinfo/rules-users">https://lists.jboss.org/mailman/listinfo/rules-users</a></pre>
</blockquote>
<br>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
rules-users mailing list
<a moz-do-not-send="true" class="moz-txt-link-abbreviated" href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a>
<a moz-do-not-send="true" class="moz-txt-link-freetext" href="https://lists.jboss.org/mailman/listinfo/rules-users">https://lists.jboss.org/mailman/listinfo/rules-users</a></pre>
</blockquote>
<br>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
rules-users mailing list
<a class="moz-txt-link-abbreviated" href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a>
<a class="moz-txt-link-freetext" href="https://lists.jboss.org/mailman/listinfo/rules-users">https://lists.jboss.org/mailman/listinfo/rules-users</a></pre>
</blockquote>
<br>
</body>
</html>