[jboss-svn-commits] JBL Code SVN: r13094 - in labs/jbossrules/trunk/drools-core/src/main/java/org/drools: util and 1 other directory.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Jul 4 18:50:35 EDT 2007
Author: mark.proctor at jboss.com
Date: 2007-07-04 18:50:35 -0400 (Wed, 04 Jul 2007)
New Revision: 13094
Modified:
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/CompositeObjectSinkAdapter.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/MemoryVisitor.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/Rete.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/AbstractHashTable.java
Log:
JBRULES-971 concurrent issue on Rete node's ObjectTypeConf buildCache
-In cases where ObjectHashMap is used in the Rete network itself, it cannot use iterator() which expects a single threaded environment, instead it must use newIterator()
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/CompositeObjectSinkAdapter.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/CompositeObjectSinkAdapter.java 2007-07-04 22:31:51 UTC (rev 13093)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/CompositeObjectSinkAdapter.java 2007-07-04 22:50:35 UTC (rev 13094)
@@ -179,7 +179,7 @@
final List sinks = new ArrayList();
//iterate twice as custom iterator is immutable
- final Iterator mapIt = this.hashedSinkMap.iterator();
+ final Iterator mapIt = this.hashedSinkMap.newIterator();
for ( ObjectHashMap.ObjectEntry e = (ObjectHashMap.ObjectEntry) mapIt.next(); e != null; ) {
sinks.add( e.getValue() );
@@ -350,7 +350,7 @@
}
}
} else if ( this.hashedSinkMap != null ) {
- final Iterator it = this.hashedSinkMap.iterator();
+ final Iterator it = this.hashedSinkMap.newIterator();
for ( ObjectEntry entry = (ObjectEntry) it.next(); entry != null; entry = (ObjectEntry) it.next() ) {
final ObjectSink sink = (ObjectSink) entry.getValue();
sink.retractObject( handle,
@@ -395,7 +395,7 @@
}
if ( this.hashedSinkMap != null ) {
- final Iterator it = this.hashedSinkMap.iterator();
+ final Iterator it = this.hashedSinkMap.newIterator();
for ( ObjectEntry entry = (ObjectEntry) it.next(); entry != null; entry = (ObjectEntry) it.next() ) {
final ObjectSink sink = (ObjectSink) entry.getValue();
list.add( sink );
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/MemoryVisitor.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/MemoryVisitor.java 2007-07-04 22:31:51 UTC (rev 13093)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/MemoryVisitor.java 2007-07-04 22:50:35 UTC (rev 13094)
@@ -38,7 +38,7 @@
public void visitRete(final Rete rete) {
final ObjectHashMap map = rete.getObjectTypeNodes();
- final Iterator it = map.iterator();
+ final Iterator it = map.newIterator();
for ( ObjectEntry entry = (ObjectEntry) it.next(); entry != null; entry = (ObjectEntry) it.next() ) {
visit( entry.getValue() );
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/Rete.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/Rete.java 2007-07-04 22:31:51 UTC (rev 13093)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/Rete.java 2007-07-04 22:50:35 UTC (rev 13094)
@@ -417,7 +417,7 @@
private void buildCache(final Object object) throws FactException {
final List cache = new ArrayList();
- final Iterator it = ruleBase.getRete().getObjectTypeNodes().iterator();
+ final Iterator it = ruleBase.getRete().getObjectTypeNodes().newIterator();
for ( ObjectEntry entry = (ObjectEntry) it.next(); entry != null; entry = (ObjectEntry) it.next() ) {
final ObjectTypeNode node = (ObjectTypeNode) entry.getValue();
if ( node.matches( object ) ) {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/AbstractHashTable.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/AbstractHashTable.java 2007-07-04 22:31:51 UTC (rev 13093)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/AbstractHashTable.java 2007-07-04 22:50:35 UTC (rev 13094)
@@ -59,6 +59,13 @@
this.iterator.reset();
return this.iterator;
}
+
+ public Iterator newIterator() {
+ HashTableIterator iterator = new HashTableIterator( this );
+ iterator.reset();
+ return iterator;
+
+ }
public void setComparator(final ObjectComparator comparator) {
this.comparator = comparator;
More information about the jboss-svn-commits
mailing list