Fedor Isakov
271df160bb
Optimize rete rule matcher for dropping occurrences.
...
Introduce a reactive scheme: alpha node has "dependent" nodes which
it can invalidate transitively. Drop block initiates invalidation,
intro block actually drops the nodes.
2019-12-08 17:48:01 +01:00
Fedor Isakov
2199905ea2
Enhance profiler to report actual time spent at probe locations.
...
Instead of just reporting the times each probe has been called,
collect and calculate the actual time taken by each probe location from
the whole backtrace pool.
2019-12-08 16:28:31 +01:00
Fedor Isakov
4eb93f20f9
Re-organize places in reactor to gather profiling information.
2019-12-08 15:44:36 +01:00
Fedor Isakov
5d63ec31e1
Remember probes for activated occurrences, optimize drop time.
...
Avoid searching for matching rules again when discarding occurrence.
2019-12-08 15:37:56 +01:00
Fedor Isakov
818d1a4dbc
Fix linked list implementation. Fixes MPSCR-18
...
New implementation enables the previously failing tests to pass.
2019-11-26 23:07:42 +01:00
Fedor Isakov
65daa76c6b
Remove droppedTrail. Optimize operation with consumed signatures. Restore test.
...
It appears the feature that tracks the occurrences that have been
dropped
requires too much memory.
2019-11-26 11:26:42 +01:00
Fedor Isakov
9fab2e9d34
Refactor and redesign ReteRuleMatcher for better memory footprint.
...
Drop layer prototype, make layer mutable.
Keep nodes in a layer in a linked list with fail-safe iterator.
Introduce update queue for update blocks.
Update blocks run incrementally unless reset.
Maintain trail of introduced and dropped occurrences.
Generation iterates over nodes in the last (final) layer incrementally,
unless reset.
Introduce new test.
2019-11-24 13:34:59 +01:00
Fedor Isakov
65f7b493be
Revert "Add ReactivateBlock in Rete Matcher to correctly handle reactivation. Fixes MPSCR-17"
...
This reverts commit f96155496f .
I need to revert this commit to avoid merging problems. Going to reapply
it later if necessary.
2019-11-24 13:34:07 +01:00
Grigorii Kirgizov
f96155496f
Add ReactivateBlock in Rete Matcher to correctly handle reactivation. Fixes MPSCR-17
2019-11-19 15:43:15 +03:00
Grigorii Kirgizov
32a1ef77c9
Add test (fails now) for a new bug MPSCR-17 in Rete Matcher concerned with reactivation
2019-11-19 15:43:15 +03:00
Grigorii Kirgizov
e7b374ce50
Fix calls to trace.reactivate (there were extra calls in some exec paths)
2019-11-19 15:43:15 +03:00
Grigorii Kirgizov
716e285c0c
Small cleanup of EvaluationTrace usage
2019-11-07 17:14:40 +03:00
Grigorii Kirgizov
f80371e148
MPSCR-14: Correctly trace incrementally reactivated occurrences. Fixes the bug.
2019-11-07 15:43:02 +03:00
Grigorii Kirgizov
45df4d845f
Minor cleanup: remove DependentRulesSpec and its usages in RulesDiff
...
for historical documentation purposes, why it was needed:
It was used for specifying and handling rules which must be simply removed
without all related incremental invalidation machinery.
Long time ago some of these dependencies weren't captured
and such "simply dependent" rules must have been handled separately.
Currently it's handled by general invalidation case.
2019-11-06 19:10:29 +03:00
Grigorii Kirgizov
572a2cbfd5
Revert "Revert "MPSCR-4: Upd refs to new RuleIndex on Dispatcher construction in incremental case.""
...
This reverts commit a0b2af95
This together with preceding changes concerned with preserving Rules finally fixes MPSCR-4.
2019-11-06 19:10:29 +03:00
Grigorii Kirgizov
95214fcae9
Rename 'handlers' in Program to 'rulesLists'
2019-11-06 19:10:29 +03:00
Grigorii Kirgizov
87e9251242
Add RulesDiff.getPreserved() accessor to preserved rules
2019-11-06 19:10:29 +03:00
Grigorii Kirgizov
f343ba0d3b
Adjust to changes in SessionToken & RulesDiff interfaces
2019-11-06 19:10:29 +03:00
Grigorii Kirgizov
bfcee33ec9
Modify SessionToken to preserve old rules instead of tags & RulesDiff to also distinguish preserved rules
2019-11-06 19:10:29 +03:00
Grigorii Kirgizov
3caeddcb63
Upd docs for StateFrame & add docs for StateFrameStack
2019-11-06 12:43:03 +03:00
Grigorii Kirgizov
510c3cd479
MPSCR-5: Clear all logicals from current StateFrameStack observer on incremental session teardown.
2019-11-06 12:16:11 +03:00
Fedor Isakov
a0b2af95c9
Revert "MPSCR-4: Upd refs to new RuleIndex on Dispatcher construction in incremental case."
...
This reverts commit 0dd7f8c70f .
2019-11-04 15:58:54 +01:00
Grigorii Kirgizov
0dd7f8c70f
MPSCR-4: Upd refs to new RuleIndex on Dispatcher construction in incremental case.
...
Slightly extend RuleMatcher interface.
Store RuleMatcher instances instead of RuleMatcherProbe in SessionToken.
2019-10-31 22:20:19 +03:00
Grigorii Kirgizov
a095b2e222
Provide better (hopefully) name & explanation, undeprecate and provide missing impl for 'forgetSeen' method
2019-10-15 21:17:24 +03:00
Fedor Isakov
17f5bd64b0
Optimize Dispatcher: ensure allMatches are calculated lazily on request.
2019-10-08 13:20:40 +02:00
Fedor Isakov
445108da74
Fix RuleIndex returning too many matches for a constraint w/wildcard arg.
2019-10-08 13:16:56 +02:00
Fedor Isakov
b283f657cf
Fix a nasty bug in logical context.
...
A meta logical within a pattern was not properly initialized before the rule body is processed.
2019-10-02 13:54:11 +02:00
Fedor Isakov
e69909f3be
Some more optimizations in Rete rule matcher.
2019-10-01 16:25:12 +02:00
Fedor Isakov
31c95cd069
Bump up reactor version to 0.9.14.
2019-09-30 16:31:59 +02:00
Fedor Isakov
c7b07f3b1a
Adapt to the new persistent collections API.
2019-09-30 16:31:59 +02:00
Fedor Isakov
8ce96ec41e
Introduce an abstraction layer of type aliases for persistent collections.
2019-09-30 16:31:59 +02:00
Fedor Isakov
04164e1039
Add some more profiling blocks.
2019-09-30 16:31:59 +02:00
Fedor Isakov
38e71db7e8
Revive and refactor ReteNetwork-based rule matching algorithm.
...
ReteNetwork is faster on large samples.
RuleMatchingProbe is mutable and not persistent, no need to update value.
2019-09-30 16:31:59 +02:00
Fedor Isakov
f9b38113f5
Refactor and cleanup Dispatcher for better readability. Drop hacky stuff.
2019-09-30 16:31:59 +02:00
Fedor Isakov
60c39f2811
Add a test for a peculiar use case. Only triggered in production.
2019-09-30 16:31:59 +02:00
Fedor Isakov
f21c01246f
Introduce feature: optimize rule index for arguments matching.
...
RuleIndex indexes rules by constraint arguments value.
The additional feature allows to keep indexed also the head position
of the matched constraint.
2019-09-30 16:31:59 +02:00
Fedor Isakov
7d308cb0e3
Experimental feature: Rules segmentation.
...
The rules index is extended to observe the segment path a rule belongs to.
An occurrence is bound to the rule that activated it and thus has an
associated segment path.
Rules to be picked for activation can be selected on the basis
of matched segment path.
2019-09-27 21:59:58 +02:00
Fedor Isakov
6b2a14511f
A little documentation for RuleMatcher.
2019-09-27 21:59:57 +02:00
Fedor Isakov
d5bdcc971f
Remove accidental modules from the project.
2019-09-27 21:59:57 +02:00
Fedor Isakov
3ff016d989
Optimizing rule matching algorithm for performance.
2019-09-23 11:27:54 +02:00
Fedor Isakov
b8cf79e8e2
Renamed JB SDK to JB JDK
2019-09-23 11:27:54 +02:00
Grigorii Kirgizov
0f1460bb67
Add typechecking of array literals handling nested literals
...
Array literals always belong to some variable decl and their elements
are recursively checked against declared component type [JLS 10.6].
2019-09-11 13:24:01 +03:00
Fedor Isakov
1c61352068
Bump up reactor lib's version to 0.9.13.
2019-09-10 13:21:07 +02:00
Fedor Isakov
5cb4e0b289
Deprecate getting "current" EvaluationSession.
2019-09-10 13:19:59 +02:00
Fedor Isakov
487df639e5
Drop unused methods from EvaluationSession.
...
Having unused methods is confusing.
2019-09-10 13:17:34 +02:00
Fedor Isakov
af212ca92e
Refactoring EvaluationSession(Ex): drop controller accessor.
...
The inverse reference to controller from Evaluation session considered harmful.
Drop controller from EvaluationSession, drop ask/tell from EvaluationSession, extend InvocationContext with controller and supervisor accessors.
2019-09-10 13:08:53 +02:00
Fedor Isakov
279678b219
Ensure all feedback gets reported to trace.
2019-09-03 14:53:11 +02:00
Fedor Isakov
a6aed2c22c
Bump up the reactor lib version to 0.9.12.
2019-09-02 17:27:47 +02:00
Fedor Isakov
4080ab519a
Extend EvaluationFeedback with specific methods for creating details feedback; introduce details parameter.
2019-09-02 17:18:02 +02:00
Fedor Isakov
13526ded21
Prevent ephemeral messages caused by failed ask to propagate.
...
A failed ask predicate constitutes normal evaluation flow, no need to report
this to the user.
2019-08-28 17:46:34 +02:00