[rules-users] Drools memory consumption
Wolfgang Laun
wolfgang.laun at gmail.com
Mon Oct 28 13:51:55 EDT 2013
On 28/10/2013, Elran Dvir <elrand at checkpoint.com> wrote:
> Thanks for the valuable feedback!
>
> Regarding remarks about the rule itself:
>> a) Each Log without a CorrelatedEvent creates an activation. A
>> CorrelatedEvent will not apear until there are 20 Logs with the same
>> src/dst combination. This means that there are up to 19 pending
>> accumulates until the first
>> one reaches the threshold, inserts the CorrelatedEvent and cancels the
>> others.
> How can I make more efficient?
I think that window:time would be more appropriate. Or implement an
equivalent functionality using an auxiliary container.
>
>> b) Additional inefficiency is produced by the separate accumulation of the
>> markers. This set does not participate in LHS constraints, and hence could
>> be easily computed on the RHS.
> I tried to remove accumulation of the markers.
> These are the changes:
>
> New function:
>
> function Set getMarkers(Set matchedLogs) {
> HashSet<String> markerSet = new HashSet<String>();
> HashSet<String> idSet = new HashSet<String>();
> for (Object matchedLogObj : matchedLogs) {
> Log matchedLog = (Log) matchedLogObj;
> String id = getUniqueId(matchedLog);
> if (!idSet.contains(id)) {
> idSet.add(id);
> markerSet.add(matchedLog.fieldsMap.get("marker").toString());
> if (markerSet.size() == 25) break;
> }
> }
> return markerSet;
> }
>
> In LHS:
> accumulate($accumulatedLog : Log(eval(filter($accumulatedLog)), this
> after[0s,60s] $log, fieldsMap.get("src") == $log.fieldsMap.get("src"),
> fieldsMap.get("dst") == $log.fieldsMap.get("dst"), $id :
> getUniqueId(this));
> $idSet : collectSet($id) , $matchedLogs:
> collectSet($accumulatedLog);
> $idSet.size > 19)
> In RHS:
>
> fieldsMap.put("cu_markers_list", getMarkers($matchedLogs));
>
> $matchedLogs return as empty set. Why? How can I make it work?
There's no reason why it should be empty if $idSet.size > 0.
-W
More information about the rules-users
mailing list