Cache iterator does not guarantee that you'll see all entries if there are
concurrent updates, I think you are facing a race condition.
Please try ContinuousQuery as Surinder suggests, it will catch all data
changes.


On Fri, Jan 28, 2022 at 1:32 PM Surinder Mehra <redni...@gmail.com> wrote:

> Just curious, why can't we use continuous query here with "appropriate"
> event type to write to another cache. So your listener will do below things
> 1. Write entry to another cache
> 2. remove entry from source cache
>
> Just an idea, please correct if I am wrong
>
> On Fri, Jan 28, 2022 at 3:49 PM Sumit Deshinge <sumit.deshi...@gmail.com>
> wrote:
>
>> Hi,
>>
>> We are running apache ignite 2.11 with cache configuration FULL_SYNC and
>> REPLICATED mode.
>>
>> Our use case is :
>>
>> 1. *Multiple thin clients are adding data* into a cache using putAll
>> operation.
>> 2. *Simultaneously the server is reading the data* using server cache
>> iterator.
>> 3. *While iterating over the cache, data is removed from the cache and
>> added into new cache using a transaction*, i.e. transaction with remove
>> and put operations. We have transaction *concurrency - pessimistic and
>> isolation levels - repeatable_read*.
>>
>> But we are seeing few missing entries at server side, i.e. server is not
>> able to read all the data put by client. E.g. in one of the run, all thin
>> clients put 5000 entries, server is able to read only 4999 entries. Here we
>> saw 1 entry was not read by server.
>>
>> *Another observation is that, if we remove the transaction in the second
>> step above, or use optimistic transaction with serializable isolation
>> level, then this issue is not observed*.
>>
>> What could be the possible problem in this use case
>> with pessimistic concurrency and repeatable_read isolation level? This is
>> particularly important as this configuration is resulting in data loss.
>>
>> --
>> Regards,
>> Sumit Deshinge
>>
>>

Reply via email to