Ciao, I'm using 6.1.0.beta4 and I identified in my application a rule
pattern inducing memory leaks. I try to attach rule, screenshots,
and javacode to replicate the issue.
IF the rule "After No data received within the last 1 hour Error, now
resumed" is included, memory leaks happens, and pretty quickly.
IF such rule is commented out, application do manage to keep alive.
[>] Question kindly is: is this normal on 6.1.0.beta4, or shall I go ahead
and raise a JIRA for this, please?
This time I ask in the mailinglist first, just because last time I
experienced a similar issue and raised JIRA, but in fact at the end was
just another way to replicate a known issue.
Thank you in advance
Ciao,
MM
*package* com.acme.drools6test.anotherleak;
*import* com.acme.objectmodel.*
// we take time is insertion time of SensorReading
*declare* SensorReading
@role(event)
*end*
*declare* Alert
@role(event)
*end*
*declare* AlertErrorToken
@role(event)
@timestamp(ts)
ts : *long*
*end*
*declare* AMap
@role(fact)
map : java.util.HashMap
*end*
*query* "AMap"
$AMap : AMap()
*end*
*query* "Alerts"
$alert : Alert()
*end*
*query* "All"
$o : Object()
*end*
*rule* "init AMap"
*no-loop*
*when*
*not* ( AMap() )
*then*
AMap t = *new* AMap();
t.setMap( *new* java.util.HashMap() );
*insert*( t );
*end*
*rule* "to display a kind of single table that list most recent value"
*no-loop*
*when*
$sr : SensorReading($id : header.id , $value : value)
AMap($map : map)
*then*
$map.put($id, $value);
*end*
*rule* "No data received within the last 1 minutes Warning"
*no-loop*
*when*
$sr : SensorReading()
*not*( SensorReading( *this* != $sr, *this* after[0,1m] $sr ) )
*not*( Alert( sr == $sr, type == AlertType.WARNING ) )
*then*
Alert alert = *new*
Alert(kcontext.getKieRuntime().getSessionClock().getCurrentTime(), "No data
received within the last 1 minutes", AlertType.WARNING, $sr);
*insert*(alert);
System.out.println("1 minutes Warning insert " + alert);
// send WARNING notification
*end*
*rule* "No data received within the last 1 hour Error"
*no-loop*
*when*
$sr : SensorReading()
*not*( SensorReading( *this* != $sr, *this* after[0,1h] $sr ) )
*not*( Alert( sr == $sr, type == AlertType.ERROR ) )
*then*
*long* errTs =
kcontext.getKieRuntime().getSessionClock().getCurrentTime();
Alert alert = *new* Alert(errTs, "No data received within the last 1
hour", AlertType.ERROR, $sr);
*insert*(alert);
AlertErrorToken errToken = *new* AlertErrorToken();
errToken.setTs(errTs);
*insert*(errToken);
System.out.println("last 1 hour Error insert " + alert);
// send ERROR notification
*end*
*rule* "After No data received within the last 1 hour Error, now resumed"
*no-loop*
*when*
$errToken : AlertErrorToken()
$errAlert : Alert(*this* coincides $errToken)
SensorReading( *this* after $errToken )
*then*
*retract*($errToken);
System.out.println("now resumed retract " + $errToken);
// send INFO resume notification
*end*
*rule* "Housekeep rule"
*salience* -1000
*no-loop*
*dialect* "mvel"
*when*
$last : SensorReading( ) over window:length( 1 )
$earlier : SensorReading( *this* before $last, *this* != $last )
*then*
*retract*($earlier);
System.out.println("Housekeep : "+$earlier);
*end*
Show replies by date