Hello, Kamil!

Could you please provide your cache configuration?

Kind regards, Semyon.

17.05.2021, 09:10, "kimec.ethome.sk" <ki...@ethome.sk>:
> Greetings,
>
> we have recently run into a concurrency issue in an entry processor.
>
> Suppose we have a cache that is IgniteCache<Long, HashMap<String,
> String>>.
> Entries in this cache are added and modified solely via EntryProcessors.
>
> Now suppose that the cache contains a value for key 1L - a map with
> several key value pairs.
> Next suppose, we execute the same entry processor for the key 1L TWICE
> at the very same time on the same value.
>
> Up until now my understanding was that since the HashMap is stored
> offheap, each entry processor would get it's own deserialized copy of
> the HashMap for modification and Ignite would then orchestrate the
> update of the value (serializing/deserializing the value to offheap
> reagion).
>
> However, what we see in our test case is that both entry processor
> "executions" receive the same deserialized HashMap and thus the
> modification of the HashMap in both processors at the same time causes
> java.util.ConcurrentModificationException.
>
> I would expect this kind of behaviour in case the HashMap was stored on
> regular Java heap but if the value is deserialized from offheap region?
> Is my logic correct? I am trying to wrap my head around this but does
> this mean that any complex datastractures stored in must require
> separate locking?
>
> Thanks!
>
> Kamil

Reply via email to