[infinispan-issues] [JBoss JIRA] (ISPN-1546) FineGrainedAtomicMap key and value iterators are not threadsafe
Sanne Grinovero (Commented) (JIRA)
jira-events at lists.jboss.org
Wed Nov 23 10:15:40 EST 2011
[ https://issues.jboss.org/browse/ISPN-1546?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12645147#comment-12645147 ]
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
More information about the infinispan-issues
mailing list