[JBoss JIRA] Created: (JBRULES-1351) Rules not firing in heavely threaded application
by paata lominadze (JIRA)
Rules not firing in heavely threaded application
------------------------------------------------
Key: JBRULES-1351
URL: http://jira.jboss.com/jira/browse/JBRULES-1351
Project: JBoss Drools
Issue Type: Bug
Security Level: Public (Everyone can see)
Affects Versions: 4.0.3, 4.0.2
Reporter: paata lominadze
Server application loads precompiled rule package into memory
then it creates as many rulebases as much threads are there.
(every thread has its own rulebase and stateless session)
application receives messages, then it dispatches it to one of the threads.
thread itself executes rules on its own stateless session.
rules are written such a way so that at least one rule should fire.
but sometimes rules don't fire.
in such situations we are passing same facts to rules engine second time,
on the same rulebase, using same stateless session. this time one rule is selected.
facts are not modified during two runs. they also dont change from rules.
this makes us to think that the bug is in rules engine, not in the application rule design logic.
going from stateless to stateful session didnot solve this problem
fact shadowing is disabled
rules have unique salience.
all rules belong to same activation group.
we had one rulebase for all the threads and were creating one stateless session
per thread. but "misfiring" did happen much often this way. giving each thread its own
rulebase reduced "misfirings" dramatically
this bug started to appear after upgrading from 3.0.5 to 4.0.x, currently we are using 4.0.3
i think this problem has same roots as this bug:
http://jira.jboss.org/jira/browse/JBRULES-1330
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
18 years, 4 months
[JBoss JIRA] Created: (JBRULES-867) Can't load classes from expanded class dir on windows
by Dan Lipofsky (JIRA)
Can't load classes from expanded class dir on windows
-----------------------------------------------------
Key: JBRULES-867
URL: http://jira.jboss.com/jira/browse/JBRULES-867
Project: JBoss Rules
Issue Type: Bug
Security Level: Public (Everyone can see)
Components: Drl Parser/Builder
Affects Versions: 3.0.6
Environment: Windows XP SP2 (problem not reproducable on Linux), JDK 1.5.0_11-b03, Ant 1.7.0, Eclipse 3.2.2
Reporter: Dan Lipofsky
Assigned To: Mark Proctor
Priority: Minor
When running some JUnit tests of our rules from an Ant task or from
Eclipse, we got the following rule compile errors:
org.drools.rule.InvalidRulePackage: Rule Compilation error
The import com.bricsnet.core.util.constants cannot be resolved
UserGroup cannot be resolved
The same rules compile perfectly on the server.
On the server the class is question is only available from a JAR file.
In Eclipse it in an expanded class dir. In the Ant task both the
expanded class dir and the JAR file were in the classpath, but the
expanded class dir was first. Putting the JAR first on the classpath
solved the problem for the ant task (but this is not possible for
eclipse since the JAR is not available). Therefore we believe the
problem is specifically related to loading from an expanded class dir.
The problem seems to occur on Windows but not Linux.
Finally the problem only seems to occur for some classes.
All 3 of the classes in the sample rule file below are
in the same boat, but for some reason only UserGroup
is a problem (it might be the
Example 1 (fails):
package com.foobar.rules;
import com.foobar.core.util.constants.UserGroup;
import com.foobar.core.util.security.principal.UserPrincipal;
import com.foobar.core.util.security.auth.RuleAuthorization;
rule "test_rule"
when
r: RuleAuthorization()
u: UserPrincipal()
eval(u.hasGroup(123))
then
r.setLevel(RuleAuthorization.READ);
end
Example 2 (works):
package com.foobar.rules;
import com.foobar.core.util.security.principal.UserPrincipal;
import com.foobar.core.util.security.auth.RuleAuthorization;
rule "test_rule"
when
r: RuleAuthorization()
u: UserPrincipal()
eval(u.hasGroup(123))
then
r.setLevel(RuleAuthorization.READ);
end
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
18 years, 4 months