New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Some changes could be lost during the merge of delta file into main database file [CORE3466] #3827
Comments
Modified by: @hvladassignee: Vlad Khorsun [ hvlad ] |
Commented by: @hvlad Classic is not affected as there is no other activity except of merge itself in the same page cache instance. I.e. there is no user process which could Solution is to undo such optimization. Another way to avoid double writes could be implemented but not in this ticket. |
Modified by: @hvladstatus: Open [ 1 ] => Resolved [ 5 ] resolution: Fixed [ 1 ] Fix Version: 2.5.1 [ 10333 ] Fix Version: 3.0 Alpha 1 [ 10331 ] |
Modified by: @dyemanovsecurity: Developers [ 10012 ] => |
Modified by: @pcisarstatus: Resolved [ 5 ] => Closed [ 6 ] |
What if just clear BDB_merge in CCH_MARK? |
Hmm... looks like good idea |
May I ask you to not restore old code as is - instead of add new argument into |
I thought about the same. I'll try to minimize changes. |
Submitted by: @hvlad
When merge is in progress engine writes changes into both delta and main file. This creates additional IO load of course.
Therefore in v2.5 merge process was optimized - when page is read from delta file for merging purposes it is marked (with
BDB_merge flag) and not writed back into delta. It is OK if page not leave the cache until merge done. But there is a scenario
when this optimization is wrong :
a) page is read by merge process and marked by BDB_merge flag
b) page is changed by some user attachment and written into database file only
c) page is evicted from the page cache
d) user attachment going to change that page again
e) page is read from delta, this copy have no changes by (b) !
f) page is changed and written into both database and delta, overwriting changes by (b) in database
Commits: 4a916be d578149
The text was updated successfully, but these errors were encountered: