<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Exchange Server">
<!-- converted from rtf -->
<style><!-- .EmailQuote { margin-left: 1pt; padding-left: 4pt; border-left: #800000 2px solid; } --></style>
</head>
<body>
<font face="Calibri, sans-serif" size="2">
<div>Using Drools 5.0.1 FINAL</div>
<div>&nbsp;</div>
<div>Our logs contain the following exception:</div>
<div>&nbsp;</div>
<div><font face="Courier New, monospace" size="2">java.util.ConcurrentModificationException</font></div>
<div><font face="Courier New, monospace" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at java.util.HashMap$HashIterator.nextEntry(HashMap.java:2117)</font></div>
<div><font face="Courier New, monospace" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at java.util.HashMap$ValueIterator.next(HashMap.java:2147)</font></div>
<div><font face="Courier New, monospace" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.drools.reteoo.EntryPointNode.updateSink(EntryPointNode.java:285)</font></div>
<div><font face="Courier New, monospace" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.drools.reteoo.ObjectTypeNode.attach(ObjectTypeNode.java:279)</font></div>
<div><font face="Courier New, monospace" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.drools.reteoo.builder.PatternBuilder.attachObjectTypeNode(PatternBuilder.java:234)</font></div>
<div><font face="Courier New, monospace" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.drools.reteoo.ClassObjectTypeConf.&lt;init&gt;(ClassObjectTypeConf.java:93)</font></div>
<div><font face="Courier New, monospace" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.drools.common.ObjectTypeConfigurationRegistry.getObjectTypeConf(ObjectTypeConfigurationRegistry.java:58)</font></div>
<div><font face="Courier New, monospace" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:849)</font></div>
<div><font face="Courier New, monospace" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:788)</font></div>
<div><font face="Courier New, monospace" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.drools.impl.StatefulKnowledgeSessionImpl.insert(StatefulKnowledgeSessionImpl.java:216)</font></div>
<div><font face="Courier New, monospace" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at com.wellsfargo.ARGenT.Execution.SimXmlDataLoader.Load(SimXmlDataLoader.java:713)</font></div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>The code fragment around line 285 of EntryPointNode.java is the following:</div>
<div>Could the nested call to assertObject be causing the ConcurrentModificationException? </div>
<div>In other words, could the call to sink.assertObject cause an eventual recursive entry into updateSink or call another method that changes the registry and effectively invalidates the objectTypeConf iterator?</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div> <font face="Courier New, monospace">&nbsp;&nbsp; public void updateSink(final ObjectSink sink,</font></div>
<div><font face="Courier New, monospace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; final PropagationContext context,</font></div>
<div><font face="Courier New, monospace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; final InternalWorkingMemory workingMemory) {</font></div>
<div><font face="Courier New, monospace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // @todo</font></div>
<div><font face="Courier New, monospace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // JBRULES-612: the cache MUST be invalidated when a new node type is added to the network, so iterate and reset all caches.</font></div>
<div><font face="Courier New, monospace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; final ObjectTypeNode node = (ObjectTypeNode) sink;</font></div>
<div><font face="Courier New, monospace">&nbsp;</font></div>
<div><font face="Courier New, monospace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; final ObjectType newObjectType = node.getObjectType();</font></div>
<div><font face="Courier New, monospace">&nbsp;</font></div>
<div style="padding-left: 36pt; "><font face="Courier New, monospace">&nbsp;&nbsp; InternalWorkingMemoryEntryPoint wmEntryPoint = (InternalWorkingMemoryEntryPoint) workingMemory.getWorkingMemoryEntryPoint( this.entryPoint.getEntryPointId() );</font></div>
<div>&nbsp;</div>
<div><font face="Courier New, monospace">LINE 285: for ( ObjectTypeConf objectTypeConf : wmEntryPoint.getObjectTypeConfigurationRegistry().values() ) {</font></div>
<div><font face="Courier New, monospace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( newObjectType.isAssignableFrom( objectTypeConf.getConcreteObjectTypeNode().getObjectType() ) ) {</font></div>
<div><font face="Courier New, monospace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; objectTypeConf.resetCache();</font></div>
<div><font face="Courier New, monospace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ObjectTypeNode sourceNode = objectTypeConf.getConcreteObjectTypeNode();</font></div>
<div><font face="Courier New, monospace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Iterator it = ((ObjectHashSet) workingMemory.getNodeMemory( sourceNode )).iterator();</font></div>
<div><font face="Courier New, monospace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for ( ObjectEntry entry = (ObjectEntry) it.next(); entry != null; entry = (ObjectEntry) it.next() ) {</font></div>
<div><font face="Courier New, monospace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sink.assertObject( (InternalFactHandle) entry.getValue(),</font></div>
<div><font face="Courier New, monospace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; context,</font></div>
<div><font face="Courier New, monospace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; workingMemory );</font></div>
<div><font face="Courier New, monospace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</font></div>
<div><font face="Courier New, monospace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</font></div>
<div><font face="Courier New, monospace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</font></div>
<div><font face="Courier New, monospace">&nbsp;&nbsp;&nbsp; }</font></div>
<div style="margin-top: 5pt; margin-bottom: 5pt; "><font face="Cambria, serif" size="4" color="#4F81BD"><b>Tom Murphy<br>

</b><font face="Calibri, sans-serif" size="2" color="#000000"><i>Business Process Consultant<br>

Wells Fargo HCFG - CORE Deal Decisioning Platform<br>

800 S. Jordan Creek Parkway | West Des Moines, IA 50266<br>

MAC: </i></font><font face="Calibri, sans-serif" size="2" color="#FF0000"><i><b>X2301-01B<br>

</b></i></font><font face="Calibri, sans-serif" size="2" color="#000000"><b>Office: </b></font><font face="Calibri, sans-serif" size="2" color="#1F497D"><b>515 324 4853</b></font><font face="Calibri, sans-serif" size="2" color="#000000"><b> | Mobile: 941 320
8014<br>

</b></font><font face="Calibri, sans-serif" size="1" color="#808080"><i>This message may contain confidential and/or privileged information.&nbsp; If you are not the addressee or authorized to receive this for the addressee, you must not use, copy, disclose, or
take any action based on this message or any information herein.&nbsp; If you have received this message in error, please advise the sender immediately by reply e-mail and delete this message.&nbsp; Thank you for your cooperation.</i></font></font></div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
</font>
</body>
</html>