[jboss-svn-commits] JBL Code SVN: r13084 - in labs/jbossrules/trunk/drools-core: src/main/java/org/drools/common and 1 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Jul 4 12:41:25 EDT 2007


Author: mark.proctor at jboss.com
Date: 2007-07-04 12:41:25 -0400 (Wed, 04 Jul 2007)
New Revision: 13084

Modified:
   labs/jbossrules/trunk/drools-core/.classpath
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalRuleBase.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooStatelessSession.java
Log:
JBRULES-971 concurrent issue on Rete node's ObjectTypeConf buildCache

Modified: labs/jbossrules/trunk/drools-core/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-core/.classpath	2007-07-04 16:38:01 UTC (rev 13083)
+++ labs/jbossrules/trunk/drools-core/.classpath	2007-07-04 16:41:25 UTC (rev 13084)
@@ -5,8 +5,8 @@
   <classpathentry kind="src" path="src/test/resources" output="target/test-classes" excluding="**/*.java"/>
   <classpathentry kind="output" path="target/classes"/>
   <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-  <classpathentry kind="var" path="M2_REPO/xpp3/xpp3/1.1.3.4.O/xpp3-1.1.3.4.O.jar" sourcepath="M2_REPO/xpp3/xpp3/1.1.3.4.O/xpp3-1.1.3.4.O-sources.jar"/>
-  <classpathentry kind="var" path="M2_REPO/xstream/xstream/1.1.3/xstream-1.1.3.jar" sourcepath="M2_REPO/xstream/xstream/1.1.3/xstream-1.1.3-sources.jar"/>
-  <classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar" sourcepath="M2_REPO/junit/junit/3.8.1/junit-3.8.1-sources.jar"/>
+  <classpathentry kind="var" path="M2_REPO/xpp3/xpp3/1.1.3.4.O/xpp3-1.1.3.4.O.jar"/>
+  <classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
+  <classpathentry kind="var" path="M2_REPO/xstream/xstream/1.1.3/xstream-1.1.3.jar"/>
   <classpathentry kind="var" path="M2_REPO/org/mvel/mvel14/1.2beta27/mvel14-1.2beta27.jar"/>
 </classpath>
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java	2007-07-04 16:38:01 UTC (rev 13083)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java	2007-07-04 16:41:25 UTC (rev 13084)
@@ -249,6 +249,10 @@
     public Package[] getPackages() {
         return (Package[]) this.pkgs.values().toArray( new Package[this.pkgs.size()] );
     }
+    
+    public Map getPackagesMap() {
+        return this.pkgs;
+    }
 
     public Map getGlobals() {
         return this.globals;
@@ -549,11 +553,11 @@
                                                                                       this.packageClassLoader );
 
         final AbstractWorkingMemory workingMemory = (AbstractWorkingMemory) streamWithLoader.readObject();
+        
         synchronized ( this.pkgs ) {
             workingMemory.setRuleBase( this );
+            return (StatefulSession) workingMemory;
         }
-
-        return (StatefulSession) workingMemory;
     }
 
     public void addClass(String className,

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalRuleBase.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalRuleBase.java	2007-07-04 16:38:01 UTC (rev 13083)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalRuleBase.java	2007-07-04 16:41:25 UTC (rev 13084)
@@ -52,6 +52,8 @@
     public RuleBaseConfiguration getConfiguration();
     
     public Package getPackage(String name);
+    
+    public Map getPackagesMap();
 
     void disposeStatefulSession(StatefulSession statefulSession);
 

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooStatelessSession.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooStatelessSession.java	2007-07-04 16:38:01 UTC (rev 13083)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooStatelessSession.java	2007-07-04 16:41:25 UTC (rev 13084)
@@ -49,18 +49,20 @@
     }
 
     public InternalWorkingMemory newWorkingMemory() {
-        InternalWorkingMemory wm = new ReteooWorkingMemory( this.ruleBase.nextWorkingMemoryCounter(),
-                                                            this.ruleBase );
+        synchronized ( this.ruleBase.getPackagesMap() ) {
+            InternalWorkingMemory wm = new ReteooWorkingMemory( this.ruleBase.nextWorkingMemoryCounter(),
+                                                                this.ruleBase );
 
-        wm.setGlobals( globals );
-        if ( globalResolver != null ) {
-            wm.setGlobalResolver( this.globalResolver );
+            wm.setGlobals( globals );
+            if ( globalResolver != null ) {
+                wm.setGlobalResolver( this.globalResolver );
+            }
+            wm.setWorkingMemoryEventSupport( this.workingMemoryEventSupport );
+            wm.setAgendaEventSupport( this.agendaEventSupport );
+            wm.setRuleFlowEventSupport( ruleFlowEventSupport );
+
+            return wm;
         }
-        wm.setWorkingMemoryEventSupport( this.workingMemoryEventSupport );
-        wm.setAgendaEventSupport( this.agendaEventSupport );
-        wm.setRuleFlowEventSupport( ruleFlowEventSupport );
-
-        return wm;
     }
 
     public void addEventListener(final WorkingMemoryEventListener listener) {
@@ -113,16 +115,16 @@
         this.globalResolver = globalResolver;
     }
 
-    public void execute(Object object) {        
+    public void execute(Object object) {
         InternalWorkingMemory wm = newWorkingMemory();
-        
+
         wm.insert( object );
         wm.fireAllRules( this.agendaFilter );
     }
 
     public void execute(Object[] array) {
         InternalWorkingMemory wm = newWorkingMemory();
-        
+
         for ( int i = 0, length = array.length; i < length; i++ ) {
             wm.insert( array[i] );
         }
@@ -131,7 +133,7 @@
 
     public void execute(Collection collection) {
         InternalWorkingMemory wm = newWorkingMemory();
-        
+
         for ( Iterator it = collection.iterator(); it.hasNext(); ) {
             wm.insert( it.next() );
         }
@@ -140,37 +142,37 @@
 
     public void asyncExecute(final Object object) {
         InternalWorkingMemory wm = newWorkingMemory();
-        
+
         final AssertObject assertObject = new AssertObject( object );
         ExecutorService executor = this.ruleBase.getConfiguration().getExecutorService();
-        executor.setCommandExecutor( new CommandExecutor( wm ) );        
+        executor.setCommandExecutor( new CommandExecutor( wm ) );
         executor.submit( assertObject );
         executor.submit( new FireAllRules( this.agendaFilter ) );
     }
 
     public void asyncExecute(final Object[] array) {
         InternalWorkingMemory wm = newWorkingMemory();
-        
+
         final AssertObjects assertObjects = new AssertObjects( array );
         ExecutorService executor = this.ruleBase.getConfiguration().getExecutorService();
-        executor.setCommandExecutor( new CommandExecutor( wm ) );        
+        executor.setCommandExecutor( new CommandExecutor( wm ) );
         executor.submit( assertObjects );
         executor.submit( new FireAllRules( this.agendaFilter ) );
     }
 
     public void asyncExecute(final Collection collection) {
         InternalWorkingMemory wm = newWorkingMemory();
-        
+
         final AssertObjects assertObjects = new AssertObjects( collection );
         ExecutorService executor = this.ruleBase.getConfiguration().getExecutorService();
-        executor.setCommandExecutor( new CommandExecutor( wm ) );        
+        executor.setCommandExecutor( new CommandExecutor( wm ) );
         executor.submit( assertObjects );
         executor.submit( new FireAllRules( this.agendaFilter ) );
     }
 
     public StatelessSessionResult executeWithResults(Object object) {
         InternalWorkingMemory wm = newWorkingMemory();
-        
+
         wm.insert( object );
         wm.fireAllRules( this.agendaFilter );
         return new ReteStatelessSessionResult( wm );
@@ -178,7 +180,7 @@
 
     public StatelessSessionResult executeWithResults(Object[] array) {
         InternalWorkingMemory wm = newWorkingMemory();
-        
+
         for ( int i = 0, length = array.length; i < length; i++ ) {
             wm.insert( array[i] );
         }
@@ -188,7 +190,7 @@
 
     public StatelessSessionResult executeWithResults(Collection collection) {
         InternalWorkingMemory wm = newWorkingMemory();
-        
+
         for ( Iterator it = collection.iterator(); it.hasNext(); ) {
             wm.insert( it.next() );
         }




More information about the jboss-svn-commits mailing list