<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>
              &nbsp;&nbsp;&nbsp; at
org.drools.common.AbstractRuleBase.mergePackage(AbstractRuleBase.java:818)<br>
              &nbsp;&nbsp;&nbsp; at
org.drools.common.AbstractRuleBase.addPackages(AbstractRuleBase.java:615)<br>
              &nbsp;&nbsp;&nbsp; at
              org.drools.reteoo.ReteooRuleBase.addPackages(ReteooRuleBase.java:472)<br>
              &nbsp;&nbsp;&nbsp; at
org.drools.impl.KnowledgeBaseImpl.addKnowledgePackages(KnowledgeBaseImpl.java:153)<br>
              &nbsp;&nbsp;&nbsp; at
org.drools.agent.impl.KnowledgeAgentImpl.addResourcesToKnowledgeBase(KnowledgeAgentImpl.java:1173)<br>
              &nbsp;&nbsp;&nbsp; at
org.drools.agent.impl.KnowledgeAgentImpl.incrementalBuildResources(KnowledgeAgentImpl.java:1058)<br>
              &nbsp;&nbsp;&nbsp; at
org.drools.agent.impl.KnowledgeAgentImpl.buildKnowledgeBase(KnowledgeAgentImpl.java:738)<br>
              &nbsp;&nbsp;&nbsp; at
org.drools.agent.impl.KnowledgeAgentImpl.applyChangeSet(KnowledgeAgentImpl.java:259)<br>
              &nbsp;&nbsp;&nbsp; at
org.drools.agent.impl.KnowledgeAgentImpl$ChangeSetNotificationDetector.run(KnowledgeAgentImpl.java:1357)<br>
              &nbsp;&nbsp;&nbsp; at
              java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)<br>
              &nbsp;&nbsp;&nbsp; at
              java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)<br>
              &nbsp;&nbsp;&nbsp; at
              java.util.concurrent.FutureTask.run(FutureTask.java:166)<br>
              &nbsp;&nbsp;&nbsp; at
              java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)<br>
              &nbsp;&nbsp;&nbsp; at
              java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)<br>
              &nbsp;&nbsp;&nbsp; at
              java.util.concurrent.FutureTask.run(FutureTask.java:166)<br>
              &nbsp;&nbsp;&nbsp; at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)<br>
              &nbsp;&nbsp;&nbsp; at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)<br>
              &nbsp;&nbsp;&nbsp; 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>
          &nbsp;&nbsp;&nbsp; - I use Drools 5.5 from the Maven repository.<br>
          &nbsp;&nbsp;&nbsp; - my agent configuration:<br>
          &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
          agentConf.setProperty("drools.agent.newInstance", "false");<br>
          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;
          agentConf.setProperty("drools.agent.useKBaseClassLoaderForCompiling",
          "true");<br>
          &nbsp;&nbsp;&nbsp; <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 =&gt; Modified:&nbsp; [[FileResource
file='knowledge\realtimeKnowledge\test.brules.testRule.drl']]</b></u><br>
              <small><i>&nbsp;&nbsp;&nbsp; eventListener 1:::
                  ==&gt;[BeforeResourceProcessedEvent(RESOURCE_REMOVED):
                  [FileResource
                  file='knowledge\realtimeKnowledge\test.brules.testRule.drl']]</i><i><br>
                </i><i>&nbsp;&nbsp;&nbsp; eventListener 1:::
                  ==&gt;[AfterResourceProcessedEvent(RESOURCE_REMOVED):
                  [FileResource
                  file='knowledge\realtimeKnowledge\test.brules.testRule.drl']]</i><i><br>
                </i><i>&nbsp;&nbsp;&nbsp; eventListener 1:::
                  ==&gt;[AfterChangeSetProcessedEvent:
                  ChangeSetImpl{resourcesRemoved=[], resourcesAdded=[],
                  resourcesModified=[[FileResource
                  file='knowledge\realtimeKnowledge\test.brules.testRule.drl']],
                  knowledgeDefinitionsRemoved=[]}]</i><i><br>
                </i><i>&nbsp;&nbsp;&nbsp; eventListener 1:::
                  ==&gt;[ResourceCompilationFailedEvent:
                  org.drools.builder.impl.KnowledgeBuilderImpl@70d0d127]</i><i><br>
                </i><i>&nbsp;&nbsp;&nbsp; eventListener 1:::
                  ==&gt;[KnowledgeBaseUpdatedEvent:
                  org.drools.impl.KnowledgeBaseImpl@49669be]</i><i><br>
                </i><i>&nbsp;&nbsp;&nbsp; eventListener 1:::
                  ==&gt;[AfterChangeSetAppliedEvent:
                  ChangeSetImpl{resourcesRemoved=[], resourcesAdded=[],
                  resourcesModified=[[FileResource
                  file='knowledge\realtimeKnowledge\test.brules.testRule.drl']],
                  knowledgeDefinitionsRemoved=[]}]</i><i><br>
                </i><i>&nbsp;&nbsp;&nbsp; eventListener 2:::
                  ==&gt;[BeforeChangeSetAppliedEvent:
                  ChangeSetImpl{resourcesRemoved=[], resourcesAdded=[],
                  resourcesModified=[[FileResource
                  file='knowledge\packaged\test.brules.testRule.drl']],
                  &nbsp;&nbsp;&nbsp; knowledgeDefinitionsRemoved=[]}]</i><i><br>
                </i><i>&nbsp;&nbsp;&nbsp; eventListener 2:::
                  ==&gt;[BeforeResourceProcessedEvent(RESOURCE_REMOVED):
                  [FileResource
                  file='knowledge\packaged\test.brules.testRule.drl']]</i><i><br>
                </i><i>&nbsp;&nbsp;&nbsp; eventListener 2:::
                  ==&gt;[AfterResourceProcessedEvent(RESOURCE_REMOVED):
                  [FileResource
                  file='knowledge\packaged\test.brules.testRule.drl']]</i><i><br>
                </i><i>&nbsp;&nbsp;&nbsp; eventListener 2:::
                  ==&gt;[AfterChangeSetProcessedEvent:
                  ChangeSetImpl{resourcesRemoved=[], resourcesAdded=[],
                  resourcesModified=[[FileResource
                  file='knowledge\packaged\test.brules.testRule.drl']],
                  knowledgeDefinitionsRemoved=[]}]</i><i><br>
                </i><i>&nbsp;&nbsp;&nbsp; eventListener 2:::
                  ==&gt;[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>&nbsp;&nbsp;&nbsp; Changed This Rule::: Got Event: TestEvent(
                  number=5, message=doesDynamicEventTypeWork? )</i><i><br>
                </i><i>&nbsp;&nbsp;&nbsp; Changed This Rule::: Got Event: TestEvent(
                  number=4, message=doesDynamicEventTypeWork? )</i><i><br>
                </i><i>&nbsp;&nbsp;&nbsp; Changed This Rule::: Got Event: TestEvent(
                  number=2, message=doesDynamicEventTypeWork? )</i><i><br>
                </i><i>&nbsp;&nbsp;&nbsp; Changed This Rule::: Got Event: TestEvent(
                  number=1, message=doesDynamicEventTypeWork? )</i><i><br>
                </i><i>&nbsp;&nbsp;&nbsp; Changed This Rule::: Got Event: TestEvent(
                  number=2, message=doesDynamicEventTypeWork? )</i><i><br>
                </i><i>&nbsp;&nbsp;&nbsp; Changed This Rule::: Got Event: TestEvent(
                  number=1, message=doesDynamicEventTypeWork? )</i><i><br>
                </i><i>&nbsp;&nbsp;&nbsp; Changed This Rule::: Got Event: TestEvent(
                  number=2, message=doesDynamicEventTypeWork? )</i><i><br>
                </i><i>&nbsp;&nbsp;&nbsp; Changed This Rule::: Got Event: TestEvent(
                  number=1, message=doesDynamicEventTypeWork? )</i><i><br>
                </i><i><br>
                </i><i>&nbsp;&nbsp;&nbsp; eventListener 2:::
                  ==&gt;[AfterChangeSetAppliedEvent:
                  ChangeSetImpl{resourcesRemoved=[], resourcesAdded=[],
                  resourcesModified=[[FileResource
                  file='knowledge\packaged\test.brules.testRule.drl']],
                  &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; knowledgeDefinitionsRemoved=[]}]</i><i><br>
                </i><i>&nbsp;&nbsp;&nbsp; eventListener 1:::
                  ==&gt;[BeforeChangeSetAppliedEvent:
                  ChangeSetImpl{resourcesRemoved=[[FileResource
                  file='knowledge\realtimeKnowledge\test.brules.testRule.drl']],
                  resourcesAdded=[], &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
                  resourcesModified=[], knowledgeDefinitionsRemoved=[]}]</i><i><br>
                </i><i>&nbsp;&nbsp;&nbsp; eventListener 1:::
                  ==&gt;[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 =&gt; </b></u><u><b>
                  Removed:&nbsp;&nbsp; [[FileResource
                  file='knowledge\realtimeKnowledge\test.brules.testRule.drl']]</b></u><br>
              <small><i>&nbsp;&nbsp;&nbsp; eventListener 1:::
                  ==&gt;[BeforeResourceProcessedEvent(RESOURCE_MODIFIED):
                  [FileResource
                  file='knowledge\realtimeKnowledge\test.brules.testRule.drl']]</i><i><br>
                </i><i>&nbsp;&nbsp;&nbsp; eventListener 1:::
                  ==&gt;[AfterResourceProcessedEvent(RESOURCE_MODIFIED):
                  [FileResource
                  file='knowledge\realtimeKnowledge\test.brules.testRule.drl']]</i><i><br>
                </i><i>&nbsp;&nbsp;&nbsp; eventListener 1:::
                  ==&gt;[AfterChangeSetProcessedEvent:
                  ChangeSetImpl{resourcesRemoved=[[FileResource
                  file='knowledge\realtimeKnowledge\test.brules.testRule.drl']],
                  resourcesAdded=[], resourcesModified=[], &nbsp;&nbsp;&nbsp;
                  knowledgeDefinitionsRemoved=[]}]</i><i><br>
                </i><i>&nbsp;&nbsp;&nbsp; eventListener 1:::
                  ==&gt;[KnowledgeBaseUpdatedEvent:
                  org.drools.impl.KnowledgeBaseImpl@49669be]</i><i><br>
                </i><i>&nbsp;&nbsp;&nbsp; eventListener 1:::
                  ==&gt;[AfterChangeSetAppliedEvent:
                  ChangeSetImpl{resourcesRemoved=[[FileResource
                  file='knowledge\realtimeKnowledge\test.brules.testRule.drl']],
                  resourcesAdded=[], resourcesModified=[],
                  knowledgeDefinitionsRemoved=[]}]</i></small><br>
              <br>
              <font color="#cc0000">&nbsp;.... 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>