[
https://issues.jboss.org/browse/ISPN-1546?page=com.atlassian.jira.plugin....
]
Sanne Grinovero commented on ISPN-1546:
---------------------------------------
Hi Vladimir, thanks for looking into it!
Yes I share your same thoughts. Still OGM's code is not sharing the FGAM across
multiple threads _explicitly_, but it's possible that multiple Sessions ask to the
same CacheManager for the same FGAM.
Since the CacheManager is supposed to be threadsafe, I'm assuming that this is
something that should be fixed in Infinispan rather than forcing OGM to avoid concurrent
reads on the same key.
TBH, I'm glad you're on it as it doesn't sound like an easy one.
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