[jboss-jira] [JBoss JIRA] Created: (JBRULES-792) Some "collect" rules cause hang during assertion
Dirk Bergstrom (JIRA)
jira-events at lists.jboss.org
Thu Apr 12 19:44:58 EDT 2007
Some "collect" rules cause hang during assertion
------------------------------------------------
Key: JBRULES-792
URL: http://jira.jboss.com/jira/browse/JBRULES-792
Project: JBoss Rules
Issue Type: Bug
Security Level: Public (Everyone can see)
Affects Versions: 3.1-m2
Reporter: Dirk Bergstrom
Assigned To: Mark Proctor
Some combinations of collect rules and objects result in an endless
busy loop during assertion (100% CPU usage for 18 hours and counting).
The problem doesn't happen for every object, but it is repeatable for
a given object.
For instance, with the following rule:
rule "Find all RLIs for user"
when
$user : User( )
$rli_list : RecordSet( size > 0 ) from
collect( RLIRecord( $resp : responsible -> ( $user.hasReport($resp) ) ) )
then
$user.setRecords($rli_list, DataSource.RLI);
end
With 92 Users asserted, my code asserts the first 1368 RLI objects at 6-8
miliseconds per assertion, then hangs hard on #1369 (always the same
object). It has sat there occupying a cpu full time for the last 18
hours, with no visible progress.
On the other hand, with these two rules:
when
$release : ReleaseRecord( $relname : relname )
$user : User( )
$pr_list : RecordSet( size > 0 ) from
collect( PRRecord( releases contains $relname,
$resp : responsible -> ( $user.hasReport($resp) ) ) )
then
$user.setRecords($pr_list, $release, DataSource.GNATS);
end
rule "Find all PRs for user"
when
$user : User( )
$pr_list : RecordSet( size > 0 ) from
collect( PRRecord( $resp : responsible -> ( $user.hasReport($resp) ) ) )
then
$user.setRecords($pr_list, DataSource.GNATS);
end
With 92 Users and 37 ReleaseRecords asserted, I can assert all 10600
PR objects, at between 10 and 100 msec per (it slows down a bit
towards the end). Then on the next cycle the app asserts several
hundred more User objects, and later asserts another 1500 Users,
without a hitch.
If need be, I have examples of other rule/object combinations that do
and don't work. Note that a version of the RLIRecord class is
attached to JBRULES 740.
I'm using trunk, at revision 108xx -- forgot to note the exact
revision, but it includes tirelli's hashcode caching, and a few other
changes after that.
This is a follow-on to JBRULES 740.
--
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
More information about the jboss-jira
mailing list