[jboss-svn-commits] JBL Code SVN: r35744 - in labs/jbossrules/trunk: drools-core/src/main/java/org/drools/common and 1 other directory.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Oct 26 11:20:39 EDT 2010
Author: tirelli
Date: 2010-10-26 11:20:38 -0400 (Tue, 26 Oct 2010)
New Revision: 35744
Modified:
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DefaultAgenda.java
Log:
JBRULES-2756: fixing busy wait in fireUntilHalt()
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 2010-10-26 14:46:16 UTC (rev 35743)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java 2010-10-26 15:20:38 UTC (rev 35744)
@@ -6842,7 +6842,12 @@
ep.insert( new Person( "darth" ) );
Thread.currentThread().sleep( 500 );
ksession.halt();
- t1.stop();
+ t1.join(5000);
+ boolean alive = t1.isAlive();
+ if( alive ) {
+ t1.interrupt();
+ }
+ assertFalse( "Thread should have died!", alive );
assertEquals( 1,
list.size() );
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DefaultAgenda.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DefaultAgenda.java 2010-10-26 14:46:16 UTC (rev 35743)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DefaultAgenda.java 2010-10-26 15:20:38 UTC (rev 35744)
@@ -36,9 +36,7 @@
import org.drools.core.util.ClassUtils;
import org.drools.core.util.LinkedListNode;
import org.drools.event.rule.ActivationCancelledCause;
-import org.drools.impl.StatefulKnowledgeSessionImpl;
import org.drools.reteoo.LeftTuple;
-import org.drools.reteoo.ReteooWorkingMemory;
import org.drools.rule.Declaration;
import org.drools.rule.GroupElement;
import org.drools.rule.Rule;
@@ -372,9 +370,7 @@
}
// making sure we re-evaluate agenda in case we are waiting for activations
- synchronized ( this.halt ) {
- this.halt.notifyAll();
- }
+ notifyHalt();
return true;
}
@@ -1040,23 +1036,20 @@
fireUntilHalt( null );
}
- private AtomicBoolean missedNotifyAll = new AtomicBoolean(false);
-
public void fireUntilHalt(final AgendaFilter agendaFilter) {
this.halt.set( false );
while ( continueFiring( -1 ) ) {
boolean fired = fireNextItem( agendaFilter );
fired = fired || !((AbstractWorkingMemory) this.workingMemory).getActionQueue().isEmpty();
this.workingMemory.executeQueuedActions();
- if ( !fired && !missedNotifyAll.get()) {
+ if ( !fired ) {
try {
synchronized ( this.halt ) {
- this.halt.wait();
+ if( !this.halt.get() ) this.halt.wait();
}
} catch ( InterruptedException e ) {
this.halt.set( true );
}
- this.missedNotifyAll.set( false );
} else {
this.workingMemory.executeQueuedActions();
}
@@ -1089,7 +1082,6 @@
public void notifyHalt() {
synchronized ( this.halt ) {
- this.missedNotifyAll.set( true );
this.halt.notifyAll();
}
}
More information about the jboss-svn-commits
mailing list