Vcrypt.tracker.rules.RuleCache.setTransactionLogData Throws Java ConcurrentModificationException (Doc ID 2090841.1)

Last updated on JUNE 07, 2017

Applies to:

Oracle Adaptive Access Manager - Version 11.1.2.1.1 and later
Information in this document applies to any platform.

Symptoms

We are running scale tests on our QA OAAM WebLogic servers for a batch application that has extremely high transaction throughput.
After a short time (15 minutes) the servers start experiencing stuck threads and ConcurrentModificationException errors that appear in the below stack trace.

1. Our OAAM implementation is multi-threaded
2. Even with other high transaction volume applications (although not as high), this is the first time we experience this error.
3. Our custom app calls com.bharosa.vcrypt.tracker.impl.VCryptTrackerFilterImpl.createTransaction(VCryptTrackerFilterImpl) for every valid transaction our OAAM servers receive.
4. The OAAM API ends up doing a put operation on a HashMap class which should be synchronized. According the Java API Doc this class should *not* be used with multi-threaded applications, and requires external synchronization.

java.util.ConcurrentModificationException
  at java.util.HashMap$HashIterator.nextEntry(HashMap.java:977)   at java.util.HashMap$KeyIterator.next(HashMap.java:1012)
  at java.util.HashMap.buildCache(HashMap.java:590)
  at java.util.HashMap.resize(HashMap.java:576)
  at java.util.HashMap.addEntry(HashMap.java:939)
  at java.util.HashMap.put(HashMap.java:477)   at com.bharosa.vcrypt.tracker.rules.RuleCache.setTransactionLogData(RuleCache.java:624)

Cause

Sign In with your My Oracle Support account

Don't have a My Oracle Support account? Click to get started

My Oracle Support provides customers with access to over a
Million Knowledge Articles and hundreds of Community platforms