[jboss-svn-commits] JBL Code SVN: r13422 - in labs/jbossrules/trunk: drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel and 3 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu Jul 12 15:41:15 EDT 2007
Author: tirelli
Date: 2007-07-12 15:41:14 -0400 (Thu, 12 Jul 2007)
New Revision: 13422
Added:
labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_OutOfMemory.drl
Modified:
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELConsequenceBuilderTest.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/PropagationContextImpl.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Activation.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/PropagationContext.java
Log:
JBRULES-847: Fixing out of memory problem
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java 2007-07-12 19:40:17 UTC (rev 13421)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java 2007-07-12 19:41:14 UTC (rev 13422)
@@ -3315,7 +3315,7 @@
}
}
- public void FIXME_testOutOfMemory() throws Exception {
+ public void testOutOfMemory() throws Exception {
final PackageBuilder builder = new PackageBuilder();
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_OutOfMemory.drl" ) ) );
final Package pkg = builder.getPackage();
@@ -3326,7 +3326,7 @@
workingMemory.insert( new Cheese( "stilton", 1 ) );
- workingMemory.fireAllRules(2907000);
+ workingMemory.fireAllRules(3000000);
// just for profiling
//Thread.currentThread().wait();
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELConsequenceBuilderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELConsequenceBuilderTest.java 2007-07-12 19:40:17 UTC (rev 13421)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELConsequenceBuilderTest.java 2007-07-12 19:41:14 UTC (rev 13422)
@@ -13,6 +13,7 @@
import org.drools.base.DefaultKnowledgeHelper;
import org.drools.common.AgendaItem;
import org.drools.common.InternalFactHandle;
+import org.drools.common.PropagationContextImpl;
import org.drools.compiler.DialectRegistry;
import org.drools.compiler.PackageBuilder;
import org.drools.compiler.PackageBuilderConfiguration;
@@ -78,7 +79,7 @@
final AgendaItem item = new AgendaItem( 0,
tuple,
10,
- null,
+ new PropagationContextImpl(1, 1, null, null),
context.getRule(),
null );
final DefaultKnowledgeHelper kbHelper = new DefaultKnowledgeHelper( wm );
Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_OutOfMemory.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_OutOfMemory.drl (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_OutOfMemory.drl 2007-07-12 19:41:14 UTC (rev 13422)
@@ -0,0 +1,21 @@
+package org.drools;
+
+rule "Rule 1"
+ when
+ c: Cheese( type == "stilton" )
+ then
+ c.setPrice( c.getPrice() + 1 );
+ c.setType( "brie" );
+ update( c );
+end
+
+rule "Rule 2"
+ when
+ c: Cheese( type == "brie" )
+ then
+ c.setPrice( c.getPrice() + 1 );
+ c.setType( "stilton" );
+ update( c );
+end
+
+
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java 2007-07-12 19:40:17 UTC (rev 13421)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java 2007-07-12 19:41:14 UTC (rev 13422)
@@ -23,7 +23,6 @@
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Collections;
-import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -857,6 +856,10 @@
Object object,
Rule rule,
Activation activation) {
+ if( activation != null ) {
+ // release resources so that they can be GC'ed
+ activation.getPropagationContext().releaseResources();
+ }
final PropagationContext propagationContext = new PropagationContextImpl( this.propagationIdCounter++,
PropagationContext.ASSERTION,
rule,
@@ -964,6 +967,10 @@
}
removePropertyChangeListener( handle );
+ if( activation != null ) {
+ // release resources so that they can be GC'ed
+ activation.getPropagationContext().releaseResources();
+ }
final PropagationContext propagationContext = new PropagationContextImpl( this.propagationIdCounter++,
PropagationContext.RETRACTION,
rule,
@@ -1055,6 +1062,10 @@
return;
}
+ if( activation != null ) {
+ // release resources so that they can be GC'ed
+ activation.getPropagationContext().releaseResources();
+ }
// Nowretract any trace of the original fact
final PropagationContext propagationContext = new PropagationContextImpl( this.propagationIdCounter++,
PropagationContext.MODIFICATION,
@@ -1112,6 +1123,10 @@
this.handleFactory.increaseFactHandleRecency( handle );
+ if( activation != null ) {
+ // release resources so that they can be GC'ed
+ activation.getPropagationContext().releaseResources();
+ }
// Nowretract any trace of the original fact
final PropagationContext propagationContext = new PropagationContextImpl( this.propagationIdCounter++,
PropagationContext.MODIFICATION,
@@ -1174,6 +1189,10 @@
return;
}
+ if( activation != null ) {
+ // release resources so that they can be GC'ed
+ activation.getPropagationContext().releaseResources();
+ }
// Nowretract any trace of the original fact
final PropagationContext propagationContext = new PropagationContextImpl( this.propagationIdCounter++,
PropagationContext.MODIFICATION,
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/PropagationContextImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/PropagationContextImpl.java 2007-07-12 19:40:17 UTC (rev 13421)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/PropagationContextImpl.java 2007-07-12 19:41:14 UTC (rev 13422)
@@ -28,9 +28,9 @@
PropagationContext {
private final int type;
- private final Rule rule;
+ private Rule rule;
- private final Activation activation;
+ private Activation activation;
private final long propagationNumber;
@@ -139,4 +139,10 @@
public void clearRetractedTuples() {
this.retracted = null;
}
+
+ public void releaseResources() {
+ this.activation = null;
+ this.retracted = null;
+ this.rule = null;
+ }
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Activation.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Activation.java 2007-07-12 19:40:17 UTC (rev 13421)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Activation.java 2007-07-12 19:41:14 UTC (rev 13422)
@@ -98,4 +98,5 @@
public RuleFlowGroupNode getRuleFlowGroupNode();
public void setRuleFlowGroupNode(RuleFlowGroupNode ruleFlowGroupNode);
+
}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/PropagationContext.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/PropagationContext.java 2007-07-12 19:40:17 UTC (rev 13421)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/PropagationContext.java 2007-07-12 19:41:14 UTC (rev 13422)
@@ -49,5 +49,7 @@
ReteTuple tuple);
public void clearRetractedTuples();
+
+ public void releaseResources();
}
\ No newline at end of file
More information about the jboss-svn-commits
mailing list