Get the page size from the second meta page if the first one is invalid #294
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The current implementation only gets the pageSize from the first meta page when opening a db file. We should try to get the page size from the second meta page when the first one is invalid. There is a comment
"// TODO: scan for next page"
as well.One more method getPageSize() is added into db.go in this PR. It tries to get the page size from the first meta page, and return the page size if everything is OK. Otherwise, it tries to get the page size from the second meta page, and return the page size if it's successful.
If it fails to read the page size from both meta pages, but can read either page, then it assumes the page size is the same as the OS or the one given in options. Otherwise, it returns ErrInvalid.
This PR is also the very first step to fix etcd/issues/13406