drools linkage errors
by mani koduri
Hi,
Initially I am using jboss-drool 5.0.1 version in our project and I updated
to jboss-drools 5.4.0 version in our project but I am getting linkage
errors as mentioned below.
*java.lang.LinkageError: loader (instance of
org/drools/rule/JavaDialectRuntimeData$PackageClassLoader): attempted*
*duplicate class definition for name:
"com/ds/rule/vm/fvm/ruleengine/Rule_Product_has_minimum_number_of_valid_quotes_5263d589f8864649bbb734bada7a54ed"
*
* at java.lang.ClassLoader.defineClass1(Native Method)
[rt.jar:1.6.0_30]*
* at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
[rt.jar:1.6.0_30]*
* at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
[rt.jar:1.6.0_30]*
* at
org.drools.rule.JavaDialectRuntimeData$PackageClassLoader.fastFindClass(JavaDialectRuntimeData.java:615)
[drools-core-5.4.0.Final.jar:5.4.0.Final]*
* at
org.drools.util.CompositeClassLoader$CachingLoader.load(CompositeClassLoader.java:254)
[knowledge-api-5.4.0.Final.jar:5.4.0.Final]*
* at
org.drools.util.CompositeClassLoader$CachingLoader.load(CompositeClassLoader.java:237)
[knowledge-api-5.4.0.Final.jar:5.4.0.Final]*
* at
org.drools.util.CompositeClassLoader.loadClass(CompositeClassLoader.java:88)
[knowledge-api-5.4.0.Final.jar:5.4.0.Final]*
* at java.lang.ClassLoader.loadClass(ClassLoader.java:295)
[rt.jar:1.6.0_30]*
* at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
[rt.jar:1.6.0_30]*
* at
a.b.c.Rule_person___unique___name_656ee3db19d34e689d95e2d6b2be67b6Eval0InvokerGenerated.evaluate(Unknown
Source)*
* at
a.b.c.Rule_person___unique___name_656ee3db19d34e689d95e2d6b2be67b6Eval0Invoker.evaluate(Unknown
Source)*
* at org.drools.rule.EvalCondition.isAllowed(EvalCondition.java:114)
[drools-core-5.4.0.Final.jar:5.4.0.Final]*
And each time I ran the project I am getting same error but on different
rules.
Could you please help me out how to solve this issue?
with regards,
k.chaitanya.
13 years, 3 months
Question about drools-spring in a multi-treaded container (like tomcat).
by Gurvinder Narula1
Hello all,
I've been reading up about drool-spring integration and have put together a simple project that wires together a KnowledgeBase and KnowledgeSession as follows :
<drools:resource id="GroupUnit" type="DRL"
source="file:/Users/drools/drools-spring-test/src/Rules/drls/GroupUnit.drl" />
<drools:resource id="GradeUnit" type="DRL"
source="file:/Users/drools/drools-spring-test/src/Rules/drls/GradeUnit.drl"" />
<drools:resource id="EvaluateUnit" type="DRL"
source="file:/Users/drools/drools-spring-test/src/Rules/drls/EvaluateUnit.drl"" />
<drools:grid-node id="node1" />
<drools:kbase id="kbase1" node="node1">
<drools:resources>
<drools:resource ref="GroupUnit" />
<drools:resource ref="GradeUnit" />
<drools:resource ref="EvaluateUnit" />
</drools:resources>
</drools:kbase>
<drools:ksession id="ksession" type="stateful" kbase="kbase1"
node="node1" />
Then in my Controller call, I 'AutoWire' in the StatefulKnowledgeSession as follows :
@Controller
@RequestMapping( value = "foo" )
final class FooController{
@Autowired
StatefulKnowledgeSession ksession;
@RequestMapping( method = RequestMethod.GET )
@ResponseBody
public String evaluateUnit() {
Unit unit = new Unit("030", "502", "C", "9484", "45", new String[] {},
null);
if (ksession != null) {
ksession.fireAllRules();
ksession.insert(unit);
ksession.fireAllRules();
return "<UnitCategory>" + unit.getUnitCategory() + "</UnitCategory>";
}
else
return "<message> stateful session is null</message>";
}
The main question that I have is that – is this solution thread-safe ? From what I understand of spring is that beans configured without any additional qualifiers are inherently singletons. And when deployed in a multi-theaded container like tomcat, Spring assumes that the beans being severed up a thread-safe. So from I have read is that KnowledeSessions are inherently not thread safe. So putting the 2 together, I leaning towards the assessment that this above solution is NOT thread safe and that if I do want it to be thread safe I should set the StatefulKnowledgeSession to 'prototype' and not leave it as a singleton.
Please let me know if I'm missing anything in my assessment here !
Thanks in advance,
Gurvinder
This message is intended only for the individual or entity to which it is addressed. It may contain privileged, confidential information which is exempt from disclosure under applicable laws. If you are not the intended recipient, please note that you are strictly prohibited from disseminating or distributing this information (other than to the intended recipient) or copying this information. If you have received this communication in error, please notify us immediately by e-mail or by telephone at the above number. Thank you.
13 years, 3 months
Concurrent stateful knowledge session
by ismaximum
Hi
I have one question and one problem.
The question is, is multiple instances of stateful session, thread safe?
The problem is, we have a bunch of test cases. Each test class extends from
an abstract class in which drools session will be created. Previously we had
stateless session so therefore for each test method we had to create a new
session and call execute() method.
Now because of the huge number of test methods this runs for about 20
minutes. So we decided to change the the session to stateful to make it
faster.
After this change, many of test cases have ended with assertion failure
which doesn't make sense. I don't know what's wrong here, before each test
method, we retract any previous fact and we insert new objects.
Since jnuit runs tests in multiple threads I thought maybe there is an issue
with concurrency.
Can anyone please help me on this.
Thanks
--
View this message in context: http://drools.46999.n3.nabble.com/Concurrent-stateful-knowledge-session-t...
Sent from the Drools: User forum mailing list archive at Nabble.com.
13 years, 3 months
constraints lacking and in excess
by Michiel Vermandel
Hi,
I have written a custom move implementation.
At first I got the exception:
java.lang.IllegalStateException: The moveClass (class my.planner.solver.MoveGroupToPeriod)'s move (PROJECT Period GroupChange:{T= Inspect 55871.I#0 [4->4] Bart DE BIE IV XI} => (P5) [i1]) probably has a corrupted undoMove (my.planner.solver.util.TaskChangeListMove@35e8df37). Or maybe there are corrupted score rules.
...
I found out that I did not undo all changes that I made in the move.
After fixing this, I now often get Score corruption as below.
I checked and all changes are preceded with director.beforeVariableChanged(...) and followed by director.afterVariableChanged(...);
What could cause this corruption?
java.lang.IllegalStateException: Score corruption: the workingScore (-286hard/-30601soft) is not the uncorruptedScore (-286hard/-30401soft):
The workingMemory has 3 ConstraintOccurrence(s) in excess:
preferedRegion/NEGATIVE_SOFT:[{T= Inspect 115519.I#0 [8->8] Dirk JANSSENS IV V}, Johan LAMOTE, 99, V]=99
taskSpreading/NEGATIVE_HARD:[(P7) , 77]=100
preferedRegion/NEGATIVE_SOFT:[{T= Inspect 115519.I#1 [8->8] Erik VERHOEVEN TL V}, Dirk JANSSENS, 99, V]=99
The workingMemory has 6 ConstraintOccurrence(s) lacking:
preferedRegion/NEGATIVE_SOFT:[{T= Inspect 115519.I#0 [8->8] Dirk JANSSENS IV V}, Dirk JANSSENS, 99, V]=99
taskSpreading/NEGATIVE_HARD:[(P7) , 75]=36
preferedRegion/NEGATIVE_SOFT:[{T= Inspect 115519.I#1 [8->8] Erik VERHOEVEN TL V}, Erik VERHOEVEN, 99, V]=99
preferedRegion/NEGATIVE_SOFT:[{T= Inspect 4747.I#0 [10->10] Johan LAMOTE IV V}, Johan LAMOTE, 99, V]=99
taskSpreading/NEGATIVE_HARD:[(P8) , 74]=16
preferedRegion/NEGATIVE_SOFT:[{T= Inspect 4747.I#1 [10->10] Dirk JANSSENS TL V}, Dirk JANSSENS, 99, V]=99
Check the score rules who created those ConstraintOccurrences. Verify that each ConstraintOccurrence's causes and weight is correct.
at org.drools.planner.core.score.director.AbstractScoreDirector.assertWorkingScore(AbstractScoreDirector.java:249)
at org.drools.planner.core.solver.scope.DefaultSolverScope.assertWorkingScore(DefaultSolverScope.java:96)
at org.drools.planner.core.phase.AbstractSolverPhaseScope.assertWorkingScore(AbstractSolverPhaseScope.java:124)
at org.drools.planner.core.localsearch.DefaultLocalSearchSolverPhase.solve(DefaultLocalSearchSolverPhase.java:86)
at org.drools.planner.core.solver.DefaultSolver.runSolverPhases(DefaultSolver.java:190)
at org.drools.planner.core.solver.DefaultSolver.solve(DefaultSolver.java:155)
at my.planner.app.InspectionSchedule.solve(InspectionSchedule.java:275)
at my.planner.testcore.AbstractPlanningTestClass.solve(AbstractPlanningTestClass.java:444)
at my.planner.testcore.AbstractPlanningTestClass.solve(AbstractPlanningTestClass.java:469)
at my.planner.RealBaoTest.datasetBAO20122013(RealBaoTest.java:226)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Thanks,
Michiel
-----------------
http://www.codessentials.com - Your essential software, for free!
Follow us at http://twitter.com/#!/Codessentials
13 years, 3 months
Change in eval mvel syntax from 5.1 to 5.3
by Chris Selwyn
I have been using 5.1 for some time and am looking to upgrade.
I have found that, where in 5.1, I used to be able to write
$jd: JobDetails(
eval ( $t = ["MTSURVEY", "MTINSTALL", "MTEXCHANGE", "MTMAINT"];
!($t contains getJobType(businessArea, templateJobId) )) )
However, in 5.3.1 this now produces a syntax error as follows:-
[CheckJobType] [ERR 101] Line 9:9 no viable alternative at input '$t' in rule "CheckJobType"
[CheckJobType] Parser returned a null Package
I have found that I have to now code the condition as follows:-
$jd: JobDetails(
eval (!(["MTSURVEY", "MTINSTALL", "MTEXCHANGE", "MTMAINT"] contains getJobType(businessArea, templateJobId) )) )
It is a relatively minor thing but I am curious as to why I should have to recode this.
What has changed to cause me to do this? What other incompatibilities exist?
Chris
13 years, 3 months
Potential memory leak in package analysis tool in Guvnor 5.3
by Chris Selwyn
I have recently been looking at upgrading our installation from 5.1 to 5.3 (latest supported by RedHat).
As part of this I noticed the Package Analysis tool so I started experimenting with it.
All that happens is that I get an exceptio message in the JBoss AS server.log file and an apparent memory leak.
The exception relates to a SerializationException thrown by VerificationService.analysePackage and contains many (many) Verifier Errors saying
<quote>
[ERR 107] Line 2:0 mismatched input 'when' expecting one of the following tokens: '[package, import, global, declare, function, rule, query]'.
</quote>
Using jvisualvm, I can see that the memory usage takes a step jump each time I use the analysis tool and eventually (actually after only 2 usages) I get OutOfMemoryErrors.
The package compiles just fine.
Is there a known problem with the analysis tool?
Chris Selwyn
13 years, 3 months
add guvnor-webapp-core as a dependency to project
by kooper
Hi,I'm trying to add guvnor-webapp-core as a dependency to my project, but
after when deploying app to JBOSS 7(tried 7.1.1 and 7.0.2), I have following
exception:
11:19:50,138 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-8)
MSC00001: Failed to start service
jboss.deployment.unit."my_app-1.0-SNAPSHOT.war".WeldService:
org.jboss.msc.service.StartException in service
jboss.deployment.unit."my_app-1.0-SNAPSHOT.war".WeldService:
org.jboss.weld.exceptions.DeploymentException: Exception List with 3
exceptions:Exception 0 :org.jboss.weld.exceptions.DeploymentException:
WELD-001408 Unsatisfied dependencies for type [RepositoryStartupService]
with qualifiers [@Default] at injection point [[field] @Inject private
org.drools.guvnor.server.repository.RulesRepositoryManager.repositoryStartupService]
at
org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:275)
at
org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:244)
at org.jboss.weld.bootstrap.Validator.validateBean(Validator.java:107) at
org.jboss.weld.bootstrap.Validator.validateRIBean(Validator.java:127) at
org.jboss.weld.bootstrap.Validator.validateBeans(Validator.java:346) at
org.jboss.weld.bootstrap.Validator.validateDeployment(Validator.java:331) at
org.jboss.weld.bootstrap.WeldBootstrap.validateBeans(WeldBootstrap.java:366)
at org.jboss.as.weld.WeldContainer.start(WeldContainer.java:83) at
org.jboss.as.weld.services.WeldService.start(WeldService.java:76) at
org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811)
at
org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:636)Exception 0
:org.jboss.weld.exceptions.DeploymentException: WELD-001408 Unsatisfied
dependencies for type [RepositoryStartupService] with qualifiers [@Default]
at injection point [[field] @Inject private
org.drools.guvnor.server.repository.MailboxService.repositoryStartupService]
at
org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:275)
at
org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:244)
at org.jboss.weld.bootstrap.Validator.validateBean(Validator.java:107) at
org.jboss.weld.bootstrap.Validator.validateRIBean(Validator.java:127) at
org.jboss.weld.bootstrap.Validator.validateBeans(Validator.java:346) at
org.jboss.weld.bootstrap.Validator.validateDeployment(Validator.java:331) at
org.jboss.weld.bootstrap.WeldBootstrap.validateBeans(WeldBootstrap.java:366)
at org.jboss.as.weld.WeldContainer.start(WeldContainer.java:83) at
org.jboss.as.weld.services.WeldService.start(WeldService.java:76) at
org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811)
at
org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:636)Exception 0
:org.jboss.weld.exceptions.DeploymentException: WELD-001408 Unsatisfied
dependencies for type [ConversionService] with qualifiers [@Default] at
injection point [[field] @Inject private
org.drools.guvnor.server.RepositoryAssetService.conversionService] at
org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:275)
at
org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:244)
at org.jboss.weld.bootstrap.Validator.validateBean(Validator.java:107) at
org.jboss.weld.bootstrap.Validator.validateRIBean(Validator.java:127) at
org.jboss.weld.bootstrap.Validator.validateBeans(Validator.java:346) at
org.jboss.weld.bootstrap.Validator.validateDeployment(Validator.java:331) at
org.jboss.weld.bootstrap.WeldBootstrap.validateBeans(WeldBootstrap.java:366)
at org.jboss.as.weld.WeldContainer.start(WeldContainer.java:83) at
org.jboss.as.weld.services.WeldService.start(WeldService.java:76) at
org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811)
at
org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:636) at
org.jboss.as.weld.services.WeldService.start(WeldService.java:83) at
org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811)
[jboss-msc-1.0.2.GA.jar:1.0.2.GA] at
org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746)
[jboss-msc-1.0.2.GA.jar:1.0.2.GA] at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
[rt.jar:1.6.0_18] at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
[rt.jar:1.6.0_18] at java.lang.Thread.run(Thread.java:636)
[rt.jar:1.6.0_18]Caused by: org.jboss.weld.exceptions.DeploymentException:
Exception List with 3 exceptions:....
Do I need to add anything to project configuration to be able to add guvnor
as dependency?Thanks.
--
View this message in context: http://drools.46999.n3.nabble.com/add-guvnor-webapp-core-as-a-dependency-...
Sent from the Drools: User forum mailing list archive at Nabble.com.
13 years, 3 months