[
https://issues.jboss.org/browse/ISPN-1546?page=com.atlassian.jira.plugin....
]
Vladimir Blagojevic commented on ISPN-1546:
-------------------------------------------
Sanne, I made a thread-safe, that is, fail-safe iterator for FastCopyHashMap. One would
use it by instantiating FailSafeFastCopyHashMap instead of regular FastCopyHashMap. Should
we use it only for FGAM? Look at AtomicHashMap and let me know what you think is the
optimal solution giving you and others enough flexibility! Preview of this change is here
https://github.com/vblagoje/infinispan/compare/master...t_1546_m
FineGrainedAtomicMap key and value iterators are not threadsafe
---------------------------------------------------------------
Key: ISPN-1546
URL:
https://issues.jboss.org/browse/ISPN-1546
Project: Infinispan
Issue Type: Bug
Components: Core API, Locking and Concurrency
Reporter: Sanne Grinovero
Assignee: Vladimir Blagojevic
Invoking #keySet() or #values() might fail, even when using a transaction to isolate
threads:
{code}
java.util.ConcurrentModificationException
at
org.infinispan.util.FastCopyHashMap$FasyCopyHashMapIterator.nextEntry(FastCopyHashMap.java:484)
at org.infinispan.util.FastCopyHashMap$KeyIterator.next(FastCopyHashMap.java:560)
at java.util.AbstractCollection.addAll(AbstractCollection.java:305)
at
org.infinispan.atomic.FineGrainedAtomicHashMapProxy.keySet(FineGrainedAtomicHashMapProxy.java:104)
at
org.hibernate.ogm.dialect.infinispan.InfinispanAssociationSnapshot.getRowKeys(InfinispanAssociationSnapshot.java:59)
at org.hibernate.ogm.datastore.spi.Association.getKeys(Association.java:132)
at org.hibernate.ogm.loader.OgmLoader.getResultSet(OgmLoader.java:420)
at org.hibernate.ogm.loader.OgmLoader.doQuery(OgmLoader.java:248)
at
org.hibernate.ogm.loader.OgmLoader.doQueryAndInitializeNonLazyCollections(OgmLoader.java:215)
at org.hibernate.ogm.loader.OgmLoader.loadCollection(OgmLoader.java:185)
at
org.hibernate.ogm.loader.OgmBasicCollectionLoader.initialize(OgmBasicCollectionLoader.java:42)
at
org.hibernate.persister.collection.AbstractCollectionPersister.initialize(AbstractCollectionPersister.java:622)
at
org.hibernate.event.internal.DefaultInitializeCollectionEventListener.onInitializeCollection(DefaultInitializeCollectionEventListener.java:82)
at org.hibernate.internal.SessionImpl.initializeCollection(SessionImpl.java:1607)
at
org.hibernate.collection.internal.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:379)
at
org.hibernate.collection.internal.AbstractPersistentCollection.read(AbstractPersistentCollection.java:112)
at org.hibernate.collection.internal.PersistentSet.iterator(PersistentSet.java:180)
{code}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see:
http://www.atlassian.com/software/jira