[infinispan-issues] [JBoss JIRA] (ISPN-1546) FineGrainedAtomicMap key and value iterators are not threadsafe

Vladimir Blagojevic (Commented) (JIRA) jira-events at lists.jboss.org
Tue Dec 6 09:42:42 EST 2011


    [ https://issues.jboss.org/browse/ISPN-1546?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12648398#comment-12648398 ] 

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

        


More information about the infinispan-issues mailing list