[jboss-svn-commits] JBL Code SVN: r27024 - in labs/jbossrules/soa_branches/SOA_JDK6: 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
Fri Jun 19 07:23:37 EDT 2009


Author: jcoleman at redhat.com
Date: 2009-06-19 07:23:37 -0400 (Fri, 19 Jun 2009)
New Revision: 27024

Modified:
   labs/jbossrules/soa_branches/SOA_JDK6/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELSalienceBuilderTest.java
   labs/jbossrules/soa_branches/SOA_JDK6/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java
   labs/jbossrules/soa_branches/SOA_JDK6/drools-core/src/main/java/org/drools/reteoo/ReteooRuleBase.java
Log:
Pull across revision 26876 from branches/Branch_4_0_2_SOA_4_2.
JBRULES-1876: 
SOA-1286:
Deadlock when RuleAgent thread refreshes rules while another thread creates a statefulSession


Modified: labs/jbossrules/soa_branches/SOA_JDK6/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELSalienceBuilderTest.java
===================================================================
--- labs/jbossrules/soa_branches/SOA_JDK6/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELSalienceBuilderTest.java	2009-06-19 11:20:23 UTC (rev 27023)
+++ labs/jbossrules/soa_branches/SOA_JDK6/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELSalienceBuilderTest.java	2009-06-19 11:23:37 UTC (rev 27024)
@@ -28,7 +28,6 @@
     private InstrumentedBuildContent context;
     private RuleBase ruleBase;
 
-    @Override
     protected void setUp() throws Exception {
         super.setUp();
         final Package pkg = new Package( "pkg1" );

Modified: labs/jbossrules/soa_branches/SOA_JDK6/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java
===================================================================
--- labs/jbossrules/soa_branches/SOA_JDK6/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java	2009-06-19 11:20:23 UTC (rev 27023)
+++ labs/jbossrules/soa_branches/SOA_JDK6/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java	2009-06-19 11:23:37 UTC (rev 27024)
@@ -390,7 +390,7 @@
      * @throws FactException
      * @throws InvalidPatternException
      */
-    public synchronized void addPackage(final Package newPkg) throws PackageIntegrationException {
+    public void addPackage(final Package newPkg) throws PackageIntegrationException {
         newPkg.checkValidity();
         synchronized ( this.pkgs ) {
             final Package pkg = (Package) this.pkgs.get( newPkg.getName() );
@@ -533,16 +533,18 @@
         }
     }
 
-    private synchronized void addRule(final Package pkg,
+    private void addRule(final Package pkg,
                                       final Rule rule) throws InvalidPatternException {
-        this.eventSupport.fireBeforeRuleAdded( pkg,
-                                               rule );
-        if ( !rule.isValid() ) {
-            throw new IllegalArgumentException( "The rule called " + rule.getName() + " is not valid. Check for compile errors reported." );
+        synchronized ( this.pkgs ) {
+            this.eventSupport.fireBeforeRuleAdded( pkg,
+                                                   rule );
+            if ( !rule.isValid() ) {
+                throw new IllegalArgumentException( "The rule called " + rule.getName() + " is not valid. Check for compile errors reported." );
+            }
+            addRule( rule );
+            this.eventSupport.fireAfterRuleAdded( pkg,
+                                                  rule );
         }
-        addRule( rule );
-        this.eventSupport.fireAfterRuleAdded( pkg,
-                                              rule );
     }
 
     protected abstract void addRule(final Rule rule) throws InvalidPatternException;
@@ -652,11 +654,14 @@
 
     private void removeRule(final Package pkg,
                             final Rule rule) {
-        this.eventSupport.fireBeforeRuleRemoved( pkg,
-                                                 rule );
-        removeRule( rule );
-        this.eventSupport.fireAfterRuleRemoved( pkg,
-                                                rule );
+        synchronized ( this.pkgs ) {
+            this.eventSupport.fireBeforeRuleRemoved( pkg,
+                                                     rule );
+            
+            removeRule( rule );
+            this.eventSupport.fireAfterRuleRemoved( pkg,
+                                                    rule );
+        }
     }
 
     protected abstract void removeRule(Rule rule);
@@ -687,7 +692,7 @@
         }
     }
 
-    public synchronized void addProcess(final Process process) {
+    public void addProcess(final Process process) {
         synchronized ( this.pkgs ) {
             this.processes.put( process.getId(),
                                 process );
@@ -695,7 +700,7 @@
 
     }
 
-    public synchronized void removeProcess(final String id) {
+    public void removeProcess(final String id) {
         synchronized ( this.pkgs ) {
             this.processes.remove( id );
         }
@@ -713,8 +718,10 @@
 		return objenesis;
 	}
 
-	protected synchronized void addStatefulSession(final StatefulSession statefulSession) {
-        this.statefulSessions.add( statefulSession );
+	protected void addStatefulSession(final StatefulSession statefulSession) {
+        synchronized ( this.statefulSessions ) {
+            this.statefulSessions.add( statefulSession );
+        }
     }
 
     public Package getPackage(final String name) {

Modified: labs/jbossrules/soa_branches/SOA_JDK6/drools-core/src/main/java/org/drools/reteoo/ReteooRuleBase.java
===================================================================
--- labs/jbossrules/soa_branches/SOA_JDK6/drools-core/src/main/java/org/drools/reteoo/ReteooRuleBase.java	2009-06-19 11:20:23 UTC (rev 27023)
+++ labs/jbossrules/soa_branches/SOA_JDK6/drools-core/src/main/java/org/drools/reteoo/ReteooRuleBase.java	2009-06-19 11:23:37 UTC (rev 27024)
@@ -216,7 +216,7 @@
     /**
      * @see RuleBase
      */
-    public synchronized StatefulSession newStatefulSession(final boolean keepReference) {
+    public StatefulSession newStatefulSession(final boolean keepReference) {
         if ( this.config.isSequential() ) {
             throw new RuntimeException( "Cannot have a stateful rule session, with sequential configuration set to true" );
         }




More information about the jboss-svn-commits mailing list