[infinispan-dev] [ISPN-116] Async cache store: aggregation of multiple changes on a single key

Manik Surtani manik at jboss.org
Thu Jul 9 05:55:05 EDT 2009


On 8 Jul 2009, at 19:53, Jason T. Greene wrote:

> Manik Surtani wrote:
>> * Make the concurrent map volatile
>> * When iterating, first create a new ConcurrentMap and replace the  
>> old one with the new one so all concurrent threads write to the new  
>> Map
>> * Iterate over the old map
>
> That would lead to race conditions since a concurrent writing thread  
> could write to the "old" map, either by getting a recent yet  
> incorrect read off the volatile, or reading it right before it  
> changes.

True, since referencing the map and writing to it isn't atomic.

We could guard access to the map with a read/write lock.  Safe, if a  
little heavy-handed... map writers would acquire a RL (since we want  
concurrent access here) but the async flushing thread would need to  
wait for a WL to swap the map reference, releasing the lock after the  
map reference has been swapped.
--
Manik Surtani
manik at jboss.org
Lead, Infinispan
Lead, JBoss Cache
http://www.infinispan.org
http://www.jbosscache.org







More information about the infinispan-dev mailing list