Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
None
-
None
-
None
-
Fixed an issue when multiple checkpoints in a single WAL segment could lead to incorrect WAL reservation.
-
Release Notes Required
Description
A reason of the issue is incorrect comparison WAL pointer, that leads to choose not quite the last pointer for reservation before rebalance. The code selected the earliest WAL segment, but not the last pointer in it.
Assuming assertion error in description:
Historical iterator tries to iterate WAL out of reservation [cache=SYSTEM_CACHEGROUP_LONGKEYS, reservedPointer=FileWALPointer [idx=10, fileOff=448674503, len=104925], historicalPointer=FileWALPointer [idx=10, fileOff=442844723, len=104925]]
reservedPointer is chosen incorrect, but corresponds to the valid segment idx=10 (the same as in historicalPointer).
A valid comparison of WAL pointers solves this issue. Segment number and segment offset participate in it together (look at the FileWalPointer#comapreTo method).
Attachments
Issue Links
- links to