[
https://issues.jboss.org/browse/DROOLS-323?page=com.atlassian.jira.plugin...
]
David Templin updated DROOLS-323:
---------------------------------
Description:
Incremental builds via the {{KnowledgeAgent}} occasionally result in a
{{ClassCastException}}, such as the following:
{noformat}
java.lang.ClassCastException: org.drools.reteoo.AlphaNode$AlphaMemory cannot be cast to
org.drools.reteoo.BetaMemory
at org.drools.reteoo.JoinNode.updateSink(JoinNode.java:398)
at org.drools.reteoo.RuleTerminalNode.attach(RuleTerminalNode.java:346)
at org.drools.reteoo.builder.ReteooRuleBuilder.addSubRule(ReteooRuleBuilder.java:174)
at org.drools.reteoo.builder.ReteooRuleBuilder.addRule(ReteooRuleBuilder.java:134)
at org.drools.reteoo.ReteooBuilder.addRule(ReteooBuilder.java:113)
at org.drools.reteoo.ReteooRuleBase.addRule(ReteooRuleBase.java:445)
at org.drools.common.AbstractRuleBase.addRule(AbstractRuleBase.java:952)
at org.drools.common.AbstractRuleBase.addPackages(AbstractRuleBase.java:629)
at org.drools.reteoo.ReteooRuleBase.addPackages(ReteooRuleBase.java:472)
at org.drools.impl.KnowledgeBaseImpl.addKnowledgePackages(KnowledgeBaseImpl.java:149)
at
org.drools.agent.impl.KnowledgeAgentImpl.addResourcesToKnowledgeBase(KnowledgeAgentImpl.java:1117)
at
org.drools.agent.impl.KnowledgeAgentImpl.incrementalBuildResources(KnowledgeAgentImpl.java:1003)
at
org.drools.agent.impl.KnowledgeAgentImpl.buildKnowledgeBase(KnowledgeAgentImpl.java:686)
at org.drools.agent.impl.KnowledgeAgentImpl.applyChangeSet(KnowledgeAgentImpl.java:207)
at
org.drools.agent.impl.KnowledgeAgentImpl$ChangeSetNotificationDetector.run_aroundBody0(KnowledgeAgentImpl.java:1301)
at
org.drools.agent.impl.KnowledgeAgentImpl$ChangeSetNotificationDetector$AjcClosure1.run(KnowledgeAgentImpl.java:1)
at
com.foo.DroolsBugAspect.ajc$around$com_foo_DroolsBugAspect$1$b7e32854proceed(DroolsBugAspect.aj:8)
at
com.foo.DroolsBugAspect.ajc$around$com_foo_DroolsBugAspect$1$b7e32854(DroolsBugAspect.aj:10)
at
org.drools.agent.impl.KnowledgeAgentImpl$ChangeSetNotificationDetector.run(KnowledgeAgentImpl.java:1295)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
at java.lang.Thread.run(Thread.java:695)
{noformat}
Steps to reproduce:
# Download the attached zip file ({{drools-bug.tar.gz}})
# Extract the contents into a directory
# {{cd <directory>}}
# {{mvn install}}
# Type {{sh target/classes/run.sh}}, or else type {{java -classpath
target/classes:target/lib/* -javaagent:target/lib/aspectjweaver-1.7.3.jar com.foo.Main}}
# Wait for a sequence of log messages similar to the following messages to begin to print
to the console:
{noformat}
[2013-11-06 11:05:33,742:debug] ResourceChangeScanner attempt to scan 1 resources
[2013-11-06 11:05:33,743:debug] ResourceChangeScanner thread is waiting for 2 seconds.
{noformat}
# Edit {{target/classes/recommendations.drl}} in some trivial manner; for instance, I have
found that editing the RHS of rule "Initialize Recommendations" by adding a
print statement {{e.g. System.out.println("test");}} and editing the print
statement a few times will reliably reproduce the problem; occasionally, merely touching
the file will cause the problem to manifest.
# Wait for the exception to print to the console; it will look like the exception above
Note that the exception is suppressed by the executor architecture in Drools. Thus, I had
to weave an aspect that catches the exception and prints it.
This bug also results in a memory leak, since the {{ResourceChangeNotifier}} continues to
produce {{ChangeSet}} objects, but there are no consumers after the
{{ChangeSetNotificationDetector}} thread terminates, resulting in an unbounded queue.
was:
Incremental builds via the {{KnowledgeAgent}} occasionally result in a
{{ClassCastException}}, such as the following:
{noformat}
java.lang.ClassCastException: org.drools.reteoo.AlphaNode$AlphaMemory cannot be cast to
org.drools.reteoo.BetaMemory
at org.drools.reteoo.JoinNode.updateSink(JoinNode.java:398)
at org.drools.reteoo.RuleTerminalNode.attach(RuleTerminalNode.java:346)
at org.drools.reteoo.builder.ReteooRuleBuilder.addSubRule(ReteooRuleBuilder.java:174)
at org.drools.reteoo.builder.ReteooRuleBuilder.addRule(ReteooRuleBuilder.java:134)
at org.drools.reteoo.ReteooBuilder.addRule(ReteooBuilder.java:113)
at org.drools.reteoo.ReteooRuleBase.addRule(ReteooRuleBase.java:445)
at org.drools.common.AbstractRuleBase.addRule(AbstractRuleBase.java:952)
at org.drools.common.AbstractRuleBase.addPackages(AbstractRuleBase.java:629)
at org.drools.reteoo.ReteooRuleBase.addPackages(ReteooRuleBase.java:472)
at org.drools.impl.KnowledgeBaseImpl.addKnowledgePackages(KnowledgeBaseImpl.java:149)
at
org.drools.agent.impl.KnowledgeAgentImpl.addResourcesToKnowledgeBase(KnowledgeAgentImpl.java:1117)
at
org.drools.agent.impl.KnowledgeAgentImpl.incrementalBuildResources(KnowledgeAgentImpl.java:1003)
at
org.drools.agent.impl.KnowledgeAgentImpl.buildKnowledgeBase(KnowledgeAgentImpl.java:686)
at org.drools.agent.impl.KnowledgeAgentImpl.applyChangeSet(KnowledgeAgentImpl.java:207)
at
org.drools.agent.impl.KnowledgeAgentImpl$ChangeSetNotificationDetector.run_aroundBody0(KnowledgeAgentImpl.java:1301)
at
org.drools.agent.impl.KnowledgeAgentImpl$ChangeSetNotificationDetector$AjcClosure1.run(KnowledgeAgentImpl.java:1)
at
com.foo.DroolsBugAspect.ajc$around$com_foo_DroolsBugAspect$1$b7e32854proceed(DroolsBugAspect.aj:8)
at
com.foo.DroolsBugAspect.ajc$around$com_foo_DroolsBugAspect$1$b7e32854(DroolsBugAspect.aj:10)
at
org.drools.agent.impl.KnowledgeAgentImpl$ChangeSetNotificationDetector.run(KnowledgeAgentImpl.java:1295)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
at java.lang.Thread.run(Thread.java:695)
{noformat}
Steps to reproduce:
# Download the attached zip file ({{drools-bug.tar.gz}})
# Extract the contents into a directory
# {{cd <directory>}}
# {{mvn install}}
# Type {{sh target/classes/run.sh}}, or else type {{java -classpath
target/classes:target/lib/* -javaagent:target/lib/aspectjweaver-1.7.3.jar com.foo.Main}}
# Wait for the following sequence of log messages to begin to print to the console:
{noformat}
[2013-11-06 11:05:33,742:debug] ResourceChangeScanner attempt to scan 1 resources
[2013-11-06 11:05:33,743:debug] ResourceChangeScanner thread is waiting for 2 seconds.
{noformat}
# Edit {{target/classes/recommendations.drl}} in some trivial manner; for instance, I have
found that editing the RHS of rule "Initialize Recommendations" by adding a
print statement {{e.g. System.out.println("test");}} and editing the print
statement a few times will reliably reproduce the problem; occasionally, merely touching
the file will cause the problem to manifest.
# Wait for the exception to print to the console; it will look like the exception above
Note that the exception is suppressed by the executor architecture in Drools. Thus, I had
to weave an aspect that catches the exception and prints it.
This bug also results in a memory leak, since the {{ResourceChangeNotifier}} continues to
produce {{ChangeSet}} objects, but there are no consumers after the
{{ChangeSetNotificationDetector}} thread terminates, resulting in an unbounded queue.
Incremental Builds Result in ClassCastExceptions
------------------------------------------------
Key: DROOLS-323
URL:
https://issues.jboss.org/browse/DROOLS-323
Project: Drools
Issue Type: Bug
Security Level: Public(Everyone can see)
Affects Versions: 5.5.0.Final
Reporter: David Templin
Assignee: Mark Proctor
Attachments: drools-bug.tar.gz
Incremental builds via the {{KnowledgeAgent}} occasionally result in a
{{ClassCastException}}, such as the following:
{noformat}
java.lang.ClassCastException: org.drools.reteoo.AlphaNode$AlphaMemory cannot be cast to
org.drools.reteoo.BetaMemory
at org.drools.reteoo.JoinNode.updateSink(JoinNode.java:398)
at org.drools.reteoo.RuleTerminalNode.attach(RuleTerminalNode.java:346)
at org.drools.reteoo.builder.ReteooRuleBuilder.addSubRule(ReteooRuleBuilder.java:174)
at org.drools.reteoo.builder.ReteooRuleBuilder.addRule(ReteooRuleBuilder.java:134)
at org.drools.reteoo.ReteooBuilder.addRule(ReteooBuilder.java:113)
at org.drools.reteoo.ReteooRuleBase.addRule(ReteooRuleBase.java:445)
at org.drools.common.AbstractRuleBase.addRule(AbstractRuleBase.java:952)
at org.drools.common.AbstractRuleBase.addPackages(AbstractRuleBase.java:629)
at org.drools.reteoo.ReteooRuleBase.addPackages(ReteooRuleBase.java:472)
at org.drools.impl.KnowledgeBaseImpl.addKnowledgePackages(KnowledgeBaseImpl.java:149)
at
org.drools.agent.impl.KnowledgeAgentImpl.addResourcesToKnowledgeBase(KnowledgeAgentImpl.java:1117)
at
org.drools.agent.impl.KnowledgeAgentImpl.incrementalBuildResources(KnowledgeAgentImpl.java:1003)
at
org.drools.agent.impl.KnowledgeAgentImpl.buildKnowledgeBase(KnowledgeAgentImpl.java:686)
at org.drools.agent.impl.KnowledgeAgentImpl.applyChangeSet(KnowledgeAgentImpl.java:207)
at
org.drools.agent.impl.KnowledgeAgentImpl$ChangeSetNotificationDetector.run_aroundBody0(KnowledgeAgentImpl.java:1301)
at
org.drools.agent.impl.KnowledgeAgentImpl$ChangeSetNotificationDetector$AjcClosure1.run(KnowledgeAgentImpl.java:1)
at
com.foo.DroolsBugAspect.ajc$around$com_foo_DroolsBugAspect$1$b7e32854proceed(DroolsBugAspect.aj:8)
at
com.foo.DroolsBugAspect.ajc$around$com_foo_DroolsBugAspect$1$b7e32854(DroolsBugAspect.aj:10)
at
org.drools.agent.impl.KnowledgeAgentImpl$ChangeSetNotificationDetector.run(KnowledgeAgentImpl.java:1295)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
at java.lang.Thread.run(Thread.java:695)
{noformat}
Steps to reproduce:
# Download the attached zip file ({{drools-bug.tar.gz}})
# Extract the contents into a directory
# {{cd <directory>}}
# {{mvn install}}
# Type {{sh target/classes/run.sh}}, or else type {{java -classpath
target/classes:target/lib/* -javaagent:target/lib/aspectjweaver-1.7.3.jar com.foo.Main}}
# Wait for a sequence of log messages similar to the following messages to begin to print
to the console:
{noformat}
[2013-11-06 11:05:33,742:debug] ResourceChangeScanner attempt to scan 1 resources
[2013-11-06 11:05:33,743:debug] ResourceChangeScanner thread is waiting for 2 seconds.
{noformat}
# Edit {{target/classes/recommendations.drl}} in some trivial manner; for instance, I
have found that editing the RHS of rule "Initialize Recommendations" by adding a
print statement {{e.g. System.out.println("test");}} and editing the print
statement a few times will reliably reproduce the problem; occasionally, merely touching
the file will cause the problem to manifest.
# Wait for the exception to print to the console; it will look like the exception above
Note that the exception is suppressed by the executor architecture in Drools. Thus, I had
to weave an aspect that catches the exception and prints it.
This bug also results in a memory leak, since the {{ResourceChangeNotifier}} continues to
produce {{ChangeSet}} objects, but there are no consumers after the
{{ChangeSetNotificationDetector}} thread terminates, resulting in an unbounded queue.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see:
http://www.atlassian.com/software/jira