Details
Description
On a historical rebalance some updates move from one node to another wherein this update may have various order in nodes. Reordering can happen in smell interval, but it cannot avoid at all in current implementation atomic protocol.
This mean we will reduce a probably of loosing update if we make a margin from initial counter for the historical iterator on atomic cache.
The final algorithm of choosing correct WAL pointer for atomic cache with the margin is:
1) Find a checkpoint which contains a counter, that necessary for history rebalance (just like a transactional cache)
2) If the checkpoint starts with a counter less than which is necessary with margin, we are taking it.
3) If we are going out of WAL reservation, we are taking current.
4) Otherwise we are looking of a previous checkpoint and taking it if it starts from a counter less than next checkpoint (from the point 2).
5) Else we are still taking the checkpoint from the point 2.
Other words (points 3-5) the algorithm tries to check only one previous checkpoint and takes it if that has different counter.
UPD:
After a discussion I found a bug connected with using a WAL which was not reserved before for preloading.
I added an explicitly checking this and an appropriate test.
Attachments
Issue Links
- links to