Re: [rules-users] Info on Drools 6 documentation
You may use this thread to retrieve v6 Docs - http://drools.46999.n3.nabble.com/Drools-v6-documentation-release-date-td4026659.html#a4026670 -- View this message in context: http://drools.46999.n3.nabble.com/rules-users-Info-on-Drools-6-documentation-tp4026789p4026803.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
[rules-users] Weird classloader problem
Hey guys, using Drools 6 RC4. I have a simple rule which should cast an object into a specialized object (if it is indeed a specialization) and insert that into the session. rule Obj is SpecialObject salience 201 when $mainObj : MainObj(obj.class == SpecialObject.class, $obj : obj) then System.out.println(Obj is SpecialObj); SpecialObj specialObj = (SpecialObj) $obj; insert(specialObj); end This rule doesn't even compile and I get a nasty error: NoClassDefFoundError: com/iterranux/droolsjbpmHumanTask/domain/team__I (wrong name: com/iterranux/droolsjbpmHumanTask/domain/Team__I). I mean it looks like the Class is present, but somehow it's lowercased somewhere. It's weird I can use some other obj but this doesn't work. Anyone seen something like this before? Maybe some other way to do what I want to do? I tried to declare a trait and don that obj with that but same result. Another question would be if it is really necessary to insert the object as a new fact, or could I access the nested property directly in a rule and typecast it there somehow? Cheers, Alex Error java.lang.RuntimeException: Reloading agent exited via exception, please raise a jira | Error at org.springsource.loaded.agent.ClassPreProcessorAgentAdapter.transform(ClassPreProcessorAgentAdapter.java:104) | Error at sun.instrument.TransformerManager.transform(TransformerManager.java:188) | Error at sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:424) | Error at java.lang.ClassLoader.defineClass1(Native Method) | Error at java.lang.ClassLoader.defineClass(ClassLoader.java:791) | Error at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) | Error at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) | Error at java.net.URLClassLoader.access$100(URLClassLoader.java:71) | Error at java.net.URLClassLoader$1.run(URLClassLoader.java:361) | Error at java.net.URLClassLoader$1.run(URLClassLoader.java:355) | Error at java.security.AccessController.doPrivileged(Native Method) | Error at java.net.URLClassLoader.findClass(URLClassLoader.java:354) | Error at java.lang.ClassLoader.loadClass(ClassLoader.java:423) | Error at groovy.lang.GroovyClassLoader.loadClass(GroovyClassLoader.java:648) | Error at groovy.lang.GroovyClassLoader.loadClass(GroovyClassLoader.java:758) | Error at groovy.lang.GroovyClassLoader.loadClass(GroovyClassLoader.java:746) | Error at java.lang.Class.forName0(Native Method) | Error at java.lang.Class.forName(Class.java:266) | Error at org.drools.core.common.ProjectClassLoader.loadClass(ProjectClassLoader.java:80) | Error at java.lang.ClassLoader.loadClass(ClassLoader.java:356) | Error at java.lang.Class.forName0(Native Method) | Error at java.lang.Class.forName(Class.java:266) | Error at org.mvel2.ParserConfiguration.checkForDynamicImport(ParserConfiguration.java:163) | Error at org.mvel2.ParserConfiguration.hasImport(ParserConfiguration.java:191) | Error at org.mvel2.ParserContext.hasImport(ParserContext.java:360) | Error at org.mvel2.compiler.AbstractParser.createPropertyToken(AbstractParser.java:1341) | Error at org.mvel2.compiler.AbstractParser.nextToken(AbstractParser.java:846) | Error at org.mvel2.compiler.ExpressionCompiler._compile(ExpressionCompiler.java:128) | Error at org.mvel2.compiler.ExpressionCompiler.compile(ExpressionCompiler.java:62) | Error at org.mvel2.MVEL.analyze(MVEL.java:680) | Error at org.mvel2.compiler.PropertyVerifier.getMethod(PropertyVerifier.java:536) | Error at org.mvel2.compiler.PropertyVerifier.analyze(PropertyVerifier.java:120) | Error at org.mvel2.compiler.ExpressionCompiler.verify(ExpressionCompiler.java:381) | Error at org.mvel2.compiler.ExpressionCompiler._compile(ExpressionCompiler.java:273) | Error at org.mvel2.compiler.ExpressionCompiler.compile(ExpressionCompiler.java:62) | Error at org.mvel2.MVEL.analyze(MVEL.java:680) | Error at org.mvel2.MVEL.analyze(MVEL.java:685) | Error at org.drools.compiler.rule.builder.dialect.mvel.MVELExprAnalyzer.analyzeExpression(MVELExprAnalyzer.java:114) | Error at org.drools.compiler.rule.builder.dialect.mvel.MVELDialect.analyzeBlock(MVELDialect.java:539) | Error at org.drools.compiler.rule.builder.dialect.mvel.MVELConsequenceBuilder.build(MVELConsequenceBuilder.java:130) | Error at org.drools.compiler.rule.builder.RuleBuilder.build(RuleBuilder.java:103) | Error at org.drools.compiler.compiler.PackageBuilder.addRule(PackageBuilder.java:3160) | Error at org.drools.compiler.compiler.PackageBuilder.compileRules(PackageBuilder.java:1047) | Error at
Re: [rules-users] Weird classloader problem
I had similar problem and it was solved in 6.0.0.CR5. 2013/11/18 Alexander Herwix a...@herwix.com Hey guys, using Drools 6 RC4. I have a simple rule which should cast an object into a specialized object (if it is indeed a specialization) and insert that into the session. rule Obj is SpecialObject salience 201 when $mainObj : MainObj(obj.class == SpecialObject.class, $obj : obj) then System.out.println(Obj is SpecialObj); SpecialObj specialObj = (SpecialObj) $obj; insert(specialObj); end This rule doesn't even compile and I get a nasty error: NoClassDefFoundError: com/iterranux/droolsjbpmHumanTask/domain/team__I (wrong name: com/iterranux/droolsjbpmHumanTask/domain/Team__I). I mean it looks like the Class is present, but somehow it's lowercased somewhere. It's weird I can use some other obj but this doesn't work. Anyone seen something like this before? Maybe some other way to do what I want to do? I tried to declare a trait and don that obj with that but same result. Another question would be if it is really necessary to insert the object as a new fact, or could I access the nested property directly in a rule and typecast it there somehow? Cheers, Alex Error java.lang.RuntimeException: Reloading agent exited via exception, please raise a jira | Error at org.springsource.loaded.agent.ClassPreProcessorAgentAdapter.transform(ClassPreProcessorAgentAdapter.java:104) | Error at sun.instrument.TransformerManager.transform(TransformerManager.java:188) | Error at sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:424) | Error at java.lang.ClassLoader.defineClass1(Native Method) | Error at java.lang.ClassLoader.defineClass(ClassLoader.java:791) | Error at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) | Error at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) | Error at java.net.URLClassLoader.access$100(URLClassLoader.java:71) | Error at java.net.URLClassLoader$1.run(URLClassLoader.java:361) | Error at java.net.URLClassLoader$1.run(URLClassLoader.java:355) | Error at java.security.AccessController.doPrivileged(Native Method) | Error at java.net.URLClassLoader.findClass(URLClassLoader.java:354) | Error at java.lang.ClassLoader.loadClass(ClassLoader.java:423) | Error at groovy.lang.GroovyClassLoader.loadClass(GroovyClassLoader.java:648) | Error at groovy.lang.GroovyClassLoader.loadClass(GroovyClassLoader.java:758) | Error at groovy.lang.GroovyClassLoader.loadClass(GroovyClassLoader.java:746) | Error at java.lang.Class.forName0(Native Method) | Error at java.lang.Class.forName(Class.java:266) | Error at org.drools.core.common.ProjectClassLoader.loadClass(ProjectClassLoader.java:80) | Error at java.lang.ClassLoader.loadClass(ClassLoader.java:356) | Error at java.lang.Class.forName0(Native Method) | Error at java.lang.Class.forName(Class.java:266) | Error at org.mvel2.ParserConfiguration.checkForDynamicImport(ParserConfiguration.java:163) | Error at org.mvel2.ParserConfiguration.hasImport(ParserConfiguration.java:191) | Error at org.mvel2.ParserContext.hasImport(ParserContext.java:360) | Error at org.mvel2.compiler.AbstractParser.createPropertyToken(AbstractParser.java:1341) | Error at org.mvel2.compiler.AbstractParser.nextToken(AbstractParser.java:846) | Error at org.mvel2.compiler.ExpressionCompiler._compile(ExpressionCompiler.java:128) | Error at org.mvel2.compiler.ExpressionCompiler.compile(ExpressionCompiler.java:62) | Error at org.mvel2.MVEL.analyze(MVEL.java:680) | Error at org.mvel2.compiler.PropertyVerifier.getMethod(PropertyVerifier.java:536) | Error at org.mvel2.compiler.PropertyVerifier.analyze(PropertyVerifier.java:120) | Error at org.mvel2.compiler.ExpressionCompiler.verify(ExpressionCompiler.java:381) | Error at org.mvel2.compiler.ExpressionCompiler._compile(ExpressionCompiler.java:273) | Error at org.mvel2.compiler.ExpressionCompiler.compile(ExpressionCompiler.java:62) | Error at org.mvel2.MVEL.analyze(MVEL.java:680) | Error at org.mvel2.MVEL.analyze(MVEL.java:685) | Error at org.drools.compiler.rule.builder.dialect.mvel.MVELExprAnalyzer.analyzeExpression(MVELExprAnalyzer.java:114) | Error at org.drools.compiler.rule.builder.dialect.mvel.MVELDialect.analyzeBlock(MVELDialect.java:539) | Error at org.drools.compiler.rule.builder.dialect.mvel.MVELConsequenceBuilder.build(MVELConsequenceBuilder.java:130) | Error at org.drools.compiler.rule.builder.RuleBuilder.build(RuleBuilder.java:103) | Error at org.drools.compiler.compiler.PackageBuilder.addRule(PackageBuilder.java:3160) | Error at
Re: [rules-users] Drools Perm gen grows constantly
I appear to have resolved this issue by changing dialect to MVEL and setting drools.permgenThreshold=0 in META-INF/drools.rulebase.conf. I only stumbled upon this based on some hints in another post and when it didn't work I had to debug the point at which the classes got created and worked back that the permgen threshold was only used by mvel dialect rules. Appalling documentation from a performance and system configuration perspective. -- View this message in context: http://drools.46999.n3.nabble.com/Drools-Perm-gen-grows-constantly-tp4026673p4026806.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] Weird classloader problem
I actually got it to compile and work by prefixing the new var with $. Maybe it's a bug where the parser/compiler messes up, when a variable has no prefix and the same name as a class but in lowercase?! Is this even possible? Anyway if someone has a similar problem, maybe this helps :) Cheers, Alex Am 18.11.2013 um 14:13 schrieb Martin Minka martin.mi...@gmail.com: I had similar problem and it was solved in 6.0.0.CR5. 2013/11/18 Alexander Herwix a...@herwix.com Hey guys, using Drools 6 RC4. I have a simple rule which should cast an object into a specialized object (if it is indeed a specialization) and insert that into the session. rule Obj is SpecialObject salience 201 when $mainObj : MainObj(obj.class == SpecialObject.class, $obj : obj) then System.out.println(Obj is SpecialObj); SpecialObj specialObj = (SpecialObj) $obj; insert(specialObj); end This rule doesn't even compile and I get a nasty error: NoClassDefFoundError: com/iterranux/droolsjbpmHumanTask/domain/team__I (wrong name: com/iterranux/droolsjbpmHumanTask/domain/Team__I). I mean it looks like the Class is present, but somehow it's lowercased somewhere. It's weird I can use some other obj but this doesn't work. Anyone seen something like this before? Maybe some other way to do what I want to do? I tried to declare a trait and don that obj with that but same result. Another question would be if it is really necessary to insert the object as a new fact, or could I access the nested property directly in a rule and typecast it there somehow? Cheers, Alex Error java.lang.RuntimeException: Reloading agent exited via exception, please raise a jira | Error at org.springsource.loaded.agent.ClassPreProcessorAgentAdapter.transform(ClassPreProcessorAgentAdapter.java:104) | Error at sun.instrument.TransformerManager.transform(TransformerManager.java:188) | Error at sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:424) | Error at java.lang.ClassLoader.defineClass1(Native Method) | Error at java.lang.ClassLoader.defineClass(ClassLoader.java:791) | Error at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) | Error at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) | Error at java.net.URLClassLoader.access$100(URLClassLoader.java:71) | Error at java.net.URLClassLoader$1.run(URLClassLoader.java:361) | Error at java.net.URLClassLoader$1.run(URLClassLoader.java:355) | Error at java.security.AccessController.doPrivileged(Native Method) | Error at java.net.URLClassLoader.findClass(URLClassLoader.java:354) | Error at java.lang.ClassLoader.loadClass(ClassLoader.java:423) | Error at groovy.lang.GroovyClassLoader.loadClass(GroovyClassLoader.java:648) | Error at groovy.lang.GroovyClassLoader.loadClass(GroovyClassLoader.java:758) | Error at groovy.lang.GroovyClassLoader.loadClass(GroovyClassLoader.java:746) | Error at java.lang.Class.forName0(Native Method) | Error at java.lang.Class.forName(Class.java:266) | Error at org.drools.core.common.ProjectClassLoader.loadClass(ProjectClassLoader.java:80) | Error at java.lang.ClassLoader.loadClass(ClassLoader.java:356) | Error at java.lang.Class.forName0(Native Method) | Error at java.lang.Class.forName(Class.java:266) | Error at org.mvel2.ParserConfiguration.checkForDynamicImport(ParserConfiguration.java:163) | Error at org.mvel2.ParserConfiguration.hasImport(ParserConfiguration.java:191) | Error at org.mvel2.ParserContext.hasImport(ParserContext.java:360) | Error at org.mvel2.compiler.AbstractParser.createPropertyToken(AbstractParser.java:1341) | Error at org.mvel2.compiler.AbstractParser.nextToken(AbstractParser.java:846) | Error at org.mvel2.compiler.ExpressionCompiler._compile(ExpressionCompiler.java:128) | Error at org.mvel2.compiler.ExpressionCompiler.compile(ExpressionCompiler.java:62) | Error at org.mvel2.MVEL.analyze(MVEL.java:680) | Error at org.mvel2.compiler.PropertyVerifier.getMethod(PropertyVerifier.java:536) | Error at org.mvel2.compiler.PropertyVerifier.analyze(PropertyVerifier.java:120) | Error at org.mvel2.compiler.ExpressionCompiler.verify(ExpressionCompiler.java:381) | Error at org.mvel2.compiler.ExpressionCompiler._compile(ExpressionCompiler.java:273) | Error at org.mvel2.compiler.ExpressionCompiler.compile(ExpressionCompiler.java:62) | Error at org.mvel2.MVEL.analyze(MVEL.java:680) | Error at org.mvel2.MVEL.analyze(MVEL.java:685) | Error at org.drools.compiler.rule.builder.dialect.mvel.MVELExprAnalyzer.analyzeExpression(MVELExprAnalyzer.java:114) | Error at
Re: [rules-users] Drools Perm gen grows constantly
Hi, I think there's a bit of confusion here and I agree this is caused by not exhaustive documentation (we are trying to improve it). The permgen threshold option is used for constraint jitting and that one works exactly in the same way regardless of the dialects. However when using the java dialect the permgen occupation grows not because of constraint jitting but because we have to generate java classes to implement the consequences. To cut it short permgen threshold and dialects are 2 orthogonal things, but it's true that keeping the threshold to 0 and using the mvel dialect is the best combination to reduce to the minimum the permgen occupation, because the first prevents the generation of java classes for constraints jitting while the second has the same effect for what regards consequences. Nevertheless there's a performance drawback in doing this because not allowing constraint jitting means that they will be always evaluated in interpreted mode, while for the same reason mvel consequences are a bit slower than java ones. For this reason my personal advice is to look for the best compromise between permgen occupation and performances for your specific use case. I hope this helps, Mario -- View this message in context: http://drools.46999.n3.nabble.com/Drools-Perm-gen-grows-constantly-tp4026673p4026810.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] 5.6.0.CR1 gives a NullPointerException in after evaluator
I tried to reproduce the problem, with no success. Could you please create a self-contained unit test? If confirmed, I'll fix the problem as soon as possible Thanks Davide On 11/14/2013 04:48 AM, abr wrote: Hi everyone, I tried to switch from 5.5.0.Final to 5.6.0.CR1 and got a null pointer exception in the evaluation of the after evaluator. (Exact method is: /org.drools.base.evaluators.AfterEvaluatorDefinition.AfterEvaluator.evaluate(InternalWorkingMemory, InternalReadAccessor, InternalFactHandle, InternalReadAccessor, InternalFactHandle)/ ) When debugging, the exception occurs at the very first line of the method, in: /if ( extractor1.isNullValue( workingMemory, handle1.getObject() ) || extractor2.isNullValue( workingMemory, handle2.getObject() ) ) { return false; } / The cause of the exception is that handle1 is null. The rule where the exception occurs looks like: /MyFact( fromdate before[ 0d ] $min, ( todate == null || todate after[ 0d ] $max ) ) / When the exception occurs, /MyFact.fromdate/ is not null, /$min/ is not null, /MyFact.todate/ is null, /$max/ is not null. In AfterEvaluator.evaluate : /extractor1/ refers to /MyFact.todate/, /extractor2/ refers to /$max/, /handle1/ is null, /handle2/ refers to the fact including the attribute to which /$max/ variable is bound to. Of course, this worked fine in 5.5.0.Final. I couldn't test this out in Drools 6.0.0.CR5 because I have dependencies to drools-spring JAR that does not exist anymore in 6.0.0.CR5. Is it simple to fix this problem? Thanks in advance. Best, Alexis -- View this message in context: http://drools.46999.n3.nabble.com/5-6-0-CR1-gives-a-NullPointerException-in-after-evaluator-tp4026780.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] Drools Perm gen grows constantly
Thanks for clearing this up. The overhead for us is negligible and more important that the application is survivable. Using Java as the dialect would appear to not be a option for anyone then? We are using drools to process around 50Mil transactions against 15k rules. This is distributed over 32 nodes to get the end to end performance we need. Using java dialect on initial run with a mac perm size of 512Mb copes ok but on subsequent runs we run out of perm gen space and the processes take up tons of cpu and then run out of memory. For each run we have to recreate the knowledge base. -- View this message in context: http://drools.46999.n3.nabble.com/Drools-Perm-gen-grows-constantly-tp4026673p4026812.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] 5.6.0.CR1 gives a NullPointerException in after evaluator
In the past I've tried to reproduce a similar issue. Don't know if this will help, but I could not reproduce the NPEs without running a large amount of events into the rule engine. A small unit test never reproduced these issues for me, which made it harder. Not sure about this issue in particular, but other ones I've seen seem to be related to the internal hash table eventually misplacing objects. This created all sorts of odd symptoms, namely NPEs all over the place in random drools classes. But I think all of these are just symptoms of the same bug at the core level somewhere. They all are related IMO. Sent from my iPhone On Nov 18, 2013, at 9:48 AM, Davide Sottara dso...@gmail.com wrote: I tried to reproduce the problem, with no success. Could you please create a self-contained unit test? If confirmed, I'll fix the problem as soon as possible Thanks Davide On 11/14/2013 04:48 AM, abr wrote: Hi everyone, I tried to switch from 5.5.0.Final to 5.6.0.CR1 and got a null pointer exception in the evaluation of the after evaluator. (Exact method is: /org.drools.base.evaluators.AfterEvaluatorDefinition.AfterEvaluator.evaluate(InternalWorkingMemory, InternalReadAccessor, InternalFactHandle, InternalReadAccessor, InternalFactHandle)/ ) When debugging, the exception occurs at the very first line of the method, in: /if ( extractor1.isNullValue( workingMemory, handle1.getObject() ) || extractor2.isNullValue( workingMemory, handle2.getObject() ) ) { return false; } / The cause of the exception is that handle1 is null. The rule where the exception occurs looks like: /MyFact( fromdate before[ 0d ] $min, ( todate == null || todate after[ 0d ] $max ) ) / When the exception occurs, /MyFact.fromdate/ is not null, /$min/ is not null, /MyFact.todate/ is null, /$max/ is not null. In AfterEvaluator.evaluate : /extractor1/ refers to /MyFact.todate/, /extractor2/ refers to /$max/, /handle1/ is null, /handle2/ refers to the fact including the attribute to which /$max/ variable is bound to. Of course, this worked fine in 5.5.0.Final. I couldn't test this out in Drools 6.0.0.CR5 because I have dependencies to drools-spring JAR that does not exist anymore in 6.0.0.CR5. Is it simple to fix this problem? Thanks in advance. Best, Alexis -- View this message in context: http://drools.46999.n3.nabble.com/5-6-0-CR1-gives-a-NullPointerException-in-after-evaluator-tp4026780.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] Drools Perm gen grows constantly
The documentation we have has now become very large, and is not easy to maintain and keep up to date with a small team our size. We rely on community contributions for this. Now that you have figured this out, my suggestion is to get involved and help us update the documentation. The documentation will not improve, unless we all get involved and help. http://docs.jboss.org/drools/release/5.5.0.Final/droolsjbpm-introduction-docs/html/gettingstarted.html Mark On 18 Nov 2013, at 13:52, pmander paul.s.man...@gmail.com wrote: I appear to have resolved this issue by changing dialect to MVEL and setting drools.permgenThreshold=0 in META-INF/drools.rulebase.conf. I only stumbled upon this based on some hints in another post and when it didn't work I had to debug the point at which the classes got created and worked back that the permgen threshold was only used by mvel dialect rules. Appalling documentation from a performance and system configuration perspective. -- View this message in context: http://drools.46999.n3.nabble.com/Drools-Perm-gen-grows-constantly-tp4026673p4026806.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] Drools Perm gen grows constantly
Are you saying the permgen is leaking? That you update the rules, and no perigean space is reclaimed? There are some issues with the JVM, that I’ve seen before, which may be the problem. Such as the CMSClassUnloadingEnabled issue: http://java.dzone.com/articles/busting-permgen-myths I’d be interested to know if this is a pergmen leak, and if it continues on 6.x. If it does, maybe you could work with us to find out why it’s not being reclaimed? Mark On 18 Nov 2013, at 16:56, pmander paul.s.man...@gmail.com wrote: Thanks for clearing this up. The overhead for us is negligible and more important that the application is survivable. Using Java as the dialect would appear to not be a option for anyone then? We are using drools to process around 50Mil transactions against 15k rules. This is distributed over 32 nodes to get the end to end performance we need. Using java dialect on initial run with a mac perm size of 512Mb copes ok but on subsequent runs we run out of perm gen space and the processes take up tons of cpu and then run out of memory. For each run we have to recreate the knowledge base. -- View this message in context: http://drools.46999.n3.nabble.com/Drools-Perm-gen-grows-constantly-tp4026673p4026812.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] Drools Perm gen grows constantly
I'll try and get a unit test together to show this. Have a deadline tomorrow though so will take a few days. -- View this message in context: http://drools.46999.n3.nabble.com/Drools-Perm-gen-grows-constantly-tp4026673p4026816.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] Drools Perm gen grows constantly
We had this issue where the permgen space was not reclaimed as CMS does not by default reclaim unless you use CMSClassUnloadingEnabled . After that we have not seen this though the permgen space keeps growing with addition of rules.The only thing we are afraid that if the permgen space requirement becomes same/greater than the threshold that CMS reclaims then what will happen?.We keep changing/increasing the permgen space but there is a limit to this at some point we can't allocate more proportion of memory for permgen space only ... Thanks Regards, Adarsh SENIOR LEAD DEVELOPMENT SPECIALIST SCJP, SCWCD FINANCE TECHNOLOGY HSBC BANK PLC HBEU 8 Canada Square,Canary Wharf, London,E14 5HQ,United Kingdom -- Phone +44 207914720 Mobile 07595530105 Email. adarsh.cha...@hsbcib.com From: Mark Proctor mproc...@codehaus.org To: Rules Users List rules-users@lists.jboss.org Date: 18/11/2013 17:12 Subject: Re: [rules-users] Drools Perm gen grows constantly Sent by: rules-users-boun...@lists.jboss.org Are you saying the permgen is leaking? That you update the rules, and no perigean space is reclaimed? There are some issues with the JVM, that I?ve seen before, which may be the problem. Such as the CMSClassUnloadingEnabled issue: http://java.dzone.com/articles/busting-permgen-myths I?d be interested to know if this is a pergmen leak, and if it continues on 6.x. If it does, maybe you could work with us to find out why it?s not being reclaimed? Mark On 18 Nov 2013, at 16:56, pmander paul.s.man...@gmail.com wrote: Thanks for clearing this up. The overhead for us is negligible and more important that the application is survivable. Using Java as the dialect would appear to not be a option for anyone then? We are using drools to process around 50Mil transactions against 15k rules. This is distributed over 32 nodes to get the end to end performance we need. Using java dialect on initial run with a mac perm size of 512Mb copes ok but on subsequent runs we run out of perm gen space and the processes take up tons of cpu and then run out of memory. For each run we have to recreate the knowledge base. -- View this message in context: http://drools.46999.n3.nabble.com/Drools-Perm-gen-grows-constantly-tp4026673p4026812.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users HSBC Bank plc may be solicited in the course of its placement efforts for a new issue, by investment clients of the firm for whom the Bank as a firm already provides other services. It may equally decide to allocate to its own proprietary book or with an associate of HSBC Group. This represents a potential conflict of interest. HSBC Bank plc has internal arrangements designed to ensure that the firm would give unbiased and full advice to the corporate finance client about the valuation and pricing of the offering as well as internal systems, controls and procedures to identify and manage conflicts of interest. HSBC Bank plc Registered Office: 8 Canada Square, London E14 5HQ, United Kingdom Registered in England - Number 14259 Authorised by the Prudential Regulation Authority and regulated by the Financial Conduct Authority and the Prudential Regulation Authority - SAVE PAPER - THINK BEFORE YOU PRINT! This transmission has been issued by a member of the HSBC Group HSBC for the information of the addressee only and should not be reproduced and/or distributed to any other person. Each page attached hereto must be read in conjunction with any disclaimer which forms part of it. Unless otherwise stated, this transmission is neither an offer nor the solicitation of an offer to sell or purchase any investment. Its contents are based on information obtained from sources believed to be reliable but HSBC makes no representation and accepts no responsibility or liability as to its completeness or accuracy.___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] Weird classloader problem
I think it depends on the system. When we have symbols it attempts to see if they are classes are not, on some systems the file system does not recognise type and can get confused. Mark On 18 Nov 2013, at 15:17, Alexander Herwix a...@herwix.com wrote: I actually got it to compile and work by prefixing the new var with $. Maybe it's a bug where the parser/compiler messes up, when a variable has no prefix and the same name as a class but in lowercase?! Is this even possible? Anyway if someone has a similar problem, maybe this helps :) Cheers, Alex Am 18.11.2013 um 14:13 schrieb Martin Minka martin.mi...@gmail.com: I had similar problem and it was solved in 6.0.0.CR5. 2013/11/18 Alexander Herwix a...@herwix.com Hey guys, using Drools 6 RC4. I have a simple rule which should cast an object into a specialized object (if it is indeed a specialization) and insert that into the session. rule Obj is SpecialObject salience 201 when $mainObj : MainObj(obj.class == SpecialObject.class, $obj : obj) then System.out.println(Obj is SpecialObj); SpecialObj specialObj = (SpecialObj) $obj; insert(specialObj); end This rule doesn't even compile and I get a nasty error: NoClassDefFoundError: com/iterranux/droolsjbpmHumanTask/domain/team__I (wrong name: com/iterranux/droolsjbpmHumanTask/domain/Team__I). I mean it looks like the Class is present, but somehow it's lowercased somewhere. It's weird I can use some other obj but this doesn't work. Anyone seen something like this before? Maybe some other way to do what I want to do? I tried to declare a trait and don that obj with that but same result. Another question would be if it is really necessary to insert the object as a new fact, or could I access the nested property directly in a rule and typecast it there somehow? Cheers, Alex Error java.lang.RuntimeException: Reloading agent exited via exception, please raise a jira | Error at org.springsource.loaded.agent.ClassPreProcessorAgentAdapter.transform(ClassPreProcessorAgentAdapter.java:104) | Error at sun.instrument.TransformerManager.transform(TransformerManager.java:188) | Error at sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:424) | Error at java.lang.ClassLoader.defineClass1(Native Method) | Error at java.lang.ClassLoader.defineClass(ClassLoader.java:791) | Error at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) | Error at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) | Error at java.net.URLClassLoader.access$100(URLClassLoader.java:71) | Error at java.net.URLClassLoader$1.run(URLClassLoader.java:361) | Error at java.net.URLClassLoader$1.run(URLClassLoader.java:355) | Error at java.security.AccessController.doPrivileged(Native Method) | Error at java.net.URLClassLoader.findClass(URLClassLoader.java:354) | Error at java.lang.ClassLoader.loadClass(ClassLoader.java:423) | Error at groovy.lang.GroovyClassLoader.loadClass(GroovyClassLoader.java:648) | Error at groovy.lang.GroovyClassLoader.loadClass(GroovyClassLoader.java:758) | Error at groovy.lang.GroovyClassLoader.loadClass(GroovyClassLoader.java:746) | Error at java.lang.Class.forName0(Native Method) | Error at java.lang.Class.forName(Class.java:266) | Error at org.drools.core.common.ProjectClassLoader.loadClass(ProjectClassLoader.java:80) | Error at java.lang.ClassLoader.loadClass(ClassLoader.java:356) | Error at java.lang.Class.forName0(Native Method) | Error at java.lang.Class.forName(Class.java:266) | Error at org.mvel2.ParserConfiguration.checkForDynamicImport(ParserConfiguration.java:163) | Error at org.mvel2.ParserConfiguration.hasImport(ParserConfiguration.java:191) | Error at org.mvel2.ParserContext.hasImport(ParserContext.java:360) | Error at org.mvel2.compiler.AbstractParser.createPropertyToken(AbstractParser.java:1341) | Error at org.mvel2.compiler.AbstractParser.nextToken(AbstractParser.java:846) | Error at org.mvel2.compiler.ExpressionCompiler._compile(ExpressionCompiler.java:128) | Error at org.mvel2.compiler.ExpressionCompiler.compile(ExpressionCompiler.java:62) | Error at org.mvel2.MVEL.analyze(MVEL.java:680) | Error at org.mvel2.compiler.PropertyVerifier.getMethod(PropertyVerifier.java:536) | Error at org.mvel2.compiler.PropertyVerifier.analyze(PropertyVerifier.java:120) | Error at org.mvel2.compiler.ExpressionCompiler.verify(ExpressionCompiler.java:381) | Error at org.mvel2.compiler.ExpressionCompiler._compile(ExpressionCompiler.java:273) | Error at org.mvel2.compiler.ExpressionCompiler.compile(ExpressionCompiler.java:62) | Error at
Re: [rules-users] Weird classloader problem
I found that if you explicitly import the class, it can resolve the issue - instead of relying on package imports. Mark On 18 Nov 2013, at 18:31, Mark Proctor mproc...@codehaus.org wrote: I think it depends on the system. When we have symbols it attempts to see if they are classes are not, on some systems the file system does not recognise type and can get confused. Mark On 18 Nov 2013, at 15:17, Alexander Herwix a...@herwix.com wrote: I actually got it to compile and work by prefixing the new var with $. Maybe it's a bug where the parser/compiler messes up, when a variable has no prefix and the same name as a class but in lowercase?! Is this even possible? Anyway if someone has a similar problem, maybe this helps :) Cheers, Alex Am 18.11.2013 um 14:13 schrieb Martin Minka martin.mi...@gmail.com: I had similar problem and it was solved in 6.0.0.CR5. 2013/11/18 Alexander Herwix a...@herwix.com Hey guys, using Drools 6 RC4. I have a simple rule which should cast an object into a specialized object (if it is indeed a specialization) and insert that into the session. rule Obj is SpecialObject salience 201 when $mainObj : MainObj(obj.class == SpecialObject.class, $obj : obj) then System.out.println(Obj is SpecialObj); SpecialObj specialObj = (SpecialObj) $obj; insert(specialObj); end This rule doesn't even compile and I get a nasty error: NoClassDefFoundError: com/iterranux/droolsjbpmHumanTask/domain/team__I (wrong name: com/iterranux/droolsjbpmHumanTask/domain/Team__I). I mean it looks like the Class is present, but somehow it's lowercased somewhere. It's weird I can use some other obj but this doesn't work. Anyone seen something like this before? Maybe some other way to do what I want to do? I tried to declare a trait and don that obj with that but same result. Another question would be if it is really necessary to insert the object as a new fact, or could I access the nested property directly in a rule and typecast it there somehow? Cheers, Alex Error java.lang.RuntimeException: Reloading agent exited via exception, please raise a jira | Error at org.springsource.loaded.agent.ClassPreProcessorAgentAdapter.transform(ClassPreProcessorAgentAdapter.java:104) | Error at sun.instrument.TransformerManager.transform(TransformerManager.java:188) | Error at sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:424) | Error at java.lang.ClassLoader.defineClass1(Native Method) | Error at java.lang.ClassLoader.defineClass(ClassLoader.java:791) | Error at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) | Error at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) | Error at java.net.URLClassLoader.access$100(URLClassLoader.java:71) | Error at java.net.URLClassLoader$1.run(URLClassLoader.java:361) | Error at java.net.URLClassLoader$1.run(URLClassLoader.java:355) | Error at java.security.AccessController.doPrivileged(Native Method) | Error at java.net.URLClassLoader.findClass(URLClassLoader.java:354) | Error at java.lang.ClassLoader.loadClass(ClassLoader.java:423) | Error at groovy.lang.GroovyClassLoader.loadClass(GroovyClassLoader.java:648) | Error at groovy.lang.GroovyClassLoader.loadClass(GroovyClassLoader.java:758) | Error at groovy.lang.GroovyClassLoader.loadClass(GroovyClassLoader.java:746) | Error at java.lang.Class.forName0(Native Method) | Error at java.lang.Class.forName(Class.java:266) | Error at org.drools.core.common.ProjectClassLoader.loadClass(ProjectClassLoader.java:80) | Error at java.lang.ClassLoader.loadClass(ClassLoader.java:356) | Error at java.lang.Class.forName0(Native Method) | Error at java.lang.Class.forName(Class.java:266) | Error at org.mvel2.ParserConfiguration.checkForDynamicImport(ParserConfiguration.java:163) | Error at org.mvel2.ParserConfiguration.hasImport(ParserConfiguration.java:191) | Error at org.mvel2.ParserContext.hasImport(ParserContext.java:360) | Error at org.mvel2.compiler.AbstractParser.createPropertyToken(AbstractParser.java:1341) | Error at org.mvel2.compiler.AbstractParser.nextToken(AbstractParser.java:846) | Error at org.mvel2.compiler.ExpressionCompiler._compile(ExpressionCompiler.java:128) | Error at org.mvel2.compiler.ExpressionCompiler.compile(ExpressionCompiler.java:62) | Error at org.mvel2.MVEL.analyze(MVEL.java:680) | Error at org.mvel2.compiler.PropertyVerifier.getMethod(PropertyVerifier.java:536) | Error at org.mvel2.compiler.PropertyVerifier.analyze(PropertyVerifier.java:120) | Error at org.mvel2.compiler.ExpressionCompiler.verify(ExpressionCompiler.java:381) |
Re: [rules-users] Scaling Drools based application
Right now our hands are tied using multiple sessions as we have Rule flow to trigger various rules at different stages, but would give it a try. - - Prashanth -- View this message in context: http://drools.46999.n3.nabble.com/Scaling-Drools-based-application-tp4026792p4026820.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] Scaling Drools based application
Thanks Laune, would consider this though in the future implementations. Is there an effective way to replace evals since we have OR conditions where we end up using evals in decision tables. If I had to get rid of this, the only option I foresee is to split into individual rules. Does disabling JIT (just-in-time compilation), help in improving the Memory usage of Drools. - - Prashanth -- View this message in context: http://drools.46999.n3.nabble.com/Scaling-Drools-based-application-tp4026792p4026821.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] 5.6.0.CR1 gives a NullPointerException in after evaluator
Jonathan, Drools 5.5 was never meant to be multi-threaded. 5.6 tries to put a few patches here and there, 6.0 is going in that direction and 6.1 will hopefully solve the problem. Thanks for the hint to the internal hash table, it may give us ideas on what to test next. However, if you or anyone could ever reproduce the issue and submit a test case that would be REALLY appreciated Thanks Davide On 11/18/2013 12:04 PM, Jonathan Knehr wrote: In the past I've tried to reproduce a similar issue. Don't know if this will help, but I could not reproduce the NPEs without running a large amount of events into the rule engine. A small unit test never reproduced these issues for me, which made it harder. Not sure about this issue in particular, but other ones I've seen seem to be related to the internal hash table eventually misplacing objects. This created all sorts of odd symptoms, namely NPEs all over the place in random drools classes. But I think all of these are just symptoms of the same bug at the core level somewhere. They all are related IMO. Sent from my iPhone On Nov 18, 2013, at 9:48 AM, Davide Sottara dso...@gmail.com wrote: I tried to reproduce the problem, with no success. Could you please create a self-contained unit test? If confirmed, I'll fix the problem as soon as possible Thanks Davide On 11/14/2013 04:48 AM, abr wrote: Hi everyone, I tried to switch from 5.5.0.Final to 5.6.0.CR1 and got a null pointer exception in the evaluation of the after evaluator. (Exact method is: /org.drools.base.evaluators.AfterEvaluatorDefinition.AfterEvaluator.evaluate(InternalWorkingMemory, InternalReadAccessor, InternalFactHandle, InternalReadAccessor, InternalFactHandle)/ ) When debugging, the exception occurs at the very first line of the method, in: /if ( extractor1.isNullValue( workingMemory, handle1.getObject() ) || extractor2.isNullValue( workingMemory, handle2.getObject() ) ) { return false; } / The cause of the exception is that handle1 is null. The rule where the exception occurs looks like: /MyFact( fromdate before[ 0d ] $min, ( todate == null || todate after[ 0d ] $max ) ) / When the exception occurs, /MyFact.fromdate/ is not null, /$min/ is not null, /MyFact.todate/ is null, /$max/ is not null. In AfterEvaluator.evaluate : /extractor1/ refers to /MyFact.todate/, /extractor2/ refers to /$max/, /handle1/ is null, /handle2/ refers to the fact including the attribute to which /$max/ variable is bound to. Of course, this worked fine in 5.5.0.Final. I couldn't test this out in Drools 6.0.0.CR5 because I have dependencies to drools-spring JAR that does not exist anymore in 6.0.0.CR5. Is it simple to fix this problem? Thanks in advance. Best, Alexis -- View this message in context: http://drools.46999.n3.nabble.com/5-6-0-CR1-gives-a-NullPointerException-in-after-evaluator-tp4026780.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] 5.6.0.CR1 gives a NullPointerException in after evaluator
I only use it from a single thread. What I meant was that for example, for the same set of rules, the issue never was created with, say, 20 iterations of inserting the same facts/events over again. Instead, it was more on the order of a few hundred thousand before the NPEs started showing up. Literally running the same unit test in a loop until it NPE'ed. But all from a single thread... Sent from my iPhone On Nov 18, 2013, at 4:00 PM, Davide Sottara dso...@gmail.com wrote: Jonathan, Drools 5.5 was never meant to be multi-threaded. 5.6 tries to put a few patches here and there, 6.0 is going in that direction and 6.1 will hopefully solve the problem. Thanks for the hint to the internal hash table, it may give us ideas on what to test next. However, if you or anyone could ever reproduce the issue and submit a test case that would be REALLY appreciated Thanks Davide On 11/18/2013 12:04 PM, Jonathan Knehr wrote: In the past I've tried to reproduce a similar issue. Don't know if this will help, but I could not reproduce the NPEs without running a large amount of events into the rule engine. A small unit test never reproduced these issues for me, which made it harder. Not sure about this issue in particular, but other ones I've seen seem to be related to the internal hash table eventually misplacing objects. This created all sorts of odd symptoms, namely NPEs all over the place in random drools classes. But I think all of these are just symptoms of the same bug at the core level somewhere. They all are related IMO. Sent from my iPhone On Nov 18, 2013, at 9:48 AM, Davide Sottara dso...@gmail.com wrote: I tried to reproduce the problem, with no success. Could you please create a self-contained unit test? If confirmed, I'll fix the problem as soon as possible Thanks Davide On 11/14/2013 04:48 AM, abr wrote: Hi everyone, I tried to switch from 5.5.0.Final to 5.6.0.CR1 and got a null pointer exception in the evaluation of the after evaluator. (Exact method is: /org.drools.base.evaluators.AfterEvaluatorDefinition.AfterEvaluator.evaluate(InternalWorkingMemory, InternalReadAccessor, InternalFactHandle, InternalReadAccessor, InternalFactHandle)/ ) When debugging, the exception occurs at the very first line of the method, in: /if ( extractor1.isNullValue( workingMemory, handle1.getObject() ) || extractor2.isNullValue( workingMemory, handle2.getObject() ) ) { return false; } / The cause of the exception is that handle1 is null. The rule where the exception occurs looks like: /MyFact( fromdate before[ 0d ] $min, ( todate == null || todate after[ 0d ] $max ) ) / When the exception occurs, /MyFact.fromdate/ is not null, /$min/ is not null, /MyFact.todate/ is null, /$max/ is not null. In AfterEvaluator.evaluate : /extractor1/ refers to /MyFact.todate/, /extractor2/ refers to /$max/, /handle1/ is null, /handle2/ refers to the fact including the attribute to which /$max/ variable is bound to. Of course, this worked fine in 5.5.0.Final. I couldn't test this out in Drools 6.0.0.CR5 because I have dependencies to drools-spring JAR that does not exist anymore in 6.0.0.CR5. Is it simple to fix this problem? Thanks in advance. Best, Alexis -- View this message in context: http://drools.46999.n3.nabble.com/5-6-0-CR1-gives-a-NullPointerException-in-after-evaluator-tp4026780.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
[rules-users] Java Heap Space Out of Memory
I am currently using optaplanner 6.0.0.CR5, I have about 11000 planning entity objects and about 1000 planning variable objects. Would that be the cause of this problem? -- View this message in context: http://drools.46999.n3.nabble.com/Java-Heap-Space-Out-of-Memory-tp4026825.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] Transaction problems in high concurrency JBPM+Drools+Hibernate instalation
Hi Did you ever find a solution to this problem? I am experiencing exactly the same transaction issues and behavior, with the same configuration as a argaldo. -- View this message in context: http://drools.46999.n3.nabble.com/rules-users-Transaction-problems-in-high-concurrency-JBPM-Drools-Hibernate-instalation-tp4020798p4026826.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] Transaction problems in high concurrency JBPM+Drools+Hibernate instalation
lautaro.chiarle lautaro.chiarle at fluxit.com.ar writes: Hi jwest, I've uploaded a .zip file (sancor-test-cases.zip) with a mavenized project you can use as example. It includes a JUnit test called ar.com.sancor.test.ConcurrentServiceTest, which builds an Spring context to start a JBPM engine and attemps to start 2 processes simustaneously. The DB used is Derby, but you can change it to any robust DBMS you want. The result we are getting is: org.springframework.transaction.UnexpectedRollbackException: JTA transaction unexpectedly rolled back (maybe due to a timeout); Please let me know any issue you find executing the Test Case. Thanks in advance, sancor-test-cases_v3.zip http://drools.46999.n3.nabble.com/file/n4021722/sancor-test-cases_v3.zip -- View this message in context: http://drools.46999.n3.nabble.com/rules- users-Transaction-problems-in-high-concurrency-JBPM-Drools-Hibernate- instalation-tp4020798p4021722.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ rules-users mailing list rules-users at lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users Hi Did you ever find a solution to this problem? I am experiencing exactly the same transaction issues and behavior. ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users