[ 
https://issues.apache.org/jira/browse/IGNITE-14447?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17312890#comment-17312890
 ] 

Kirill Tkalenko commented on IGNITE-14447:
------------------------------------------

[~ibessonov] LGTM

> Invalid meta page can be used after index re-creation
> -----------------------------------------------------
>
>                 Key: IGNITE-14447
>                 URL: https://issues.apache.org/jira/browse/IGNITE-14447
>             Project: Ignite
>          Issue Type: Bug
>            Reporter: Ivan Bessonov
>            Assignee: Ivan Bessonov
>            Priority: Major
>             Fix For: 2.11
>
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> Consider the following scenario:
>  * A user creates index "A"
>  * Ignite allocates page 0x1234 as the index meta page and writes it to the 
> index roots tree
>  * Index is populated, query entity is written on disk
>  * Checkpoint is triggered and the index pages (including root) are written 
> to disk
>  * User drops the index
>  * The tree is deallocated, the meta page is removed from the roots tree, 
> query entity without the index is written to disk. No logical record is 
> written for the roots tree.
>  * Node crashes without checkpoint being marked
>  * Node restarts. Since the query entity does not contain the index "A", the 
> index tree is not created
>  * User deletes some entries, then attempts to create the index "A" again
>  * Since the node did not trigger checkpoint before the crash and no logical 
> record was written, the root tree contains obsolete tree with links pointing 
> to non-existing data (namely, index "A" still refers to page 0x1234)
>  * Depending on allocation pattern and enabled assertions flag, the node will 
> either fail with an assertion, or will crash the JVM
> Fundamentally, the issue is caused by inconsistency between index roots tree 
> and query entity. Ideally, we should move cache configuration to page memory 
> subsystem, but this may be a big change.
> We should check whether writing a logical record on index drop that will run 
> the index cleanup on recovery mitigates the issue (in other words, the index 
> cleanup persistent task should be triggered even if no checkpoint was marked 
> after query entity is persisted).



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to