Skip to content
Snippets Groups Projects
Commit 90fb2372 authored by Vladimir Davydov's avatar Vladimir Davydov Committed by Konstantin Osipov
Browse files

vinyl: refactor index recovery from vylog

We have vy_recovery_lookup_index() function to look up an index in a
recovery context by id and vy_recovery_iterate_index() to iterate over
ranges, runs, and slices of a found index. vy_recovery_lookup_index()
used to be a part of vy_recovery_iterate_index() and was factored out
when index logging was moved to be called after WAL write, from
vy_index_commit_create(), because during recovery we need to check if an
index creation record was flushed to vylog before restart - currently we
do it by trying to look it up in the recovery context.

To stop using index lsn as vylog index id and remove lsn from index
options, I'm planning to make the function loading an index from vylog
advance an internal vylog counter so that the next time it is called it
loads a newer incarnation of the same index. vy_recovery_lookup_index()
doesn't fit this concept. So I introduce vy_recovery_load_index() that
calls vy_recovery_lookup_index() and vy_recovery_iterate_index()
internally and make the two functions private to vylog. To deal with
indexes not logged due to vylog errors, I introduce a per index flag,
vy_index->is_committed, which is set if the index record was flushed to
vylog - the same approach is already used to handle index drop (see
vy_index_commit_drop()).
parent 6833e700
No related branches found
No related tags found
No related merge requests found
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment