Hi Ignite users,

I have 3 nodes running, with a cache with the following configuration:

cacheConfiguration.setCacheMode(CacheMode.PARTITIONED);
cacheConfiguration.setBackups(1);
cacheConfiguration.setRebalanceMode(CacheRebalanceMode.SYNC);
cacheConfiguration.setWriteSynchronizationMode(CacheWriteSynchronizationMode.FULL_SYNC);
cacheConfiguration.setAtomicityMode(CacheAtomicityMode.TRANSACTIONAL);

E.g. a partitioned cache with 1 backup - so if one of the three nodes goes
down, all the data is still available across the remaining 2 nodes.

I also have some custom code that runs on the current "leader". E.g. the
server code runs some tasks if it is the leader node - defined as being the
"oldest node".
The code running on each server registers a listener for 

{EventType.EVT_NODE_SEGMENTED,
EventType.EVT_NODE_FAILED,EventType.EVT_NODE_LEFT}

And if it discovers that it is now the new leader, the tasks restart on the
new "oldest node".

This works fine. The issue I am having is that one of these tasks that runs
on the leader, needs to issue a cache query to do some work.

I am finding, if one of my three nodes drops off, when one of the remaining
two nodes becomes the leader and resumes the work, the records it gets back
from the cache are incomplete. E.g. there may be 400 entries in the cache,
but when node 1 drops off and node 2 takes over - it only sees 250, or some
other number less than 400. A little later, this does correctly return to
400 - I expect because the exchange process has completed behind the scenes
and the node now has all the data it needs.

I am a little surprised by this however, because I am using
CacheRebalanceMode.SYNC which suggests from the docs here:
https://apacheignite.readme.io/docs/rebalancing that

"This means that any call to cache public API will be blocked until
rebalancing is finished."

E.g. if I call ignite.cache("MYCACHE").size() (a public cache method) then
this should not return an incomplete number, but rather block until the
underlying rebalance has completes and then only return 400.

Does anyone have any pointers to what I might be doing wrong here? Thanks!



--
Sent from: http://apache-ignite-users.70518.x6.nabble.com/

Reply via email to