You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Ignite TC Bot (Jira)" <ji...@apache.org> on 2021/03/31 14:38:00 UTC

[jira] [Commented] (IGNITE-14447) Invalid meta page can be used after index re-creation

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

Ignite TC Bot commented on IGNITE-14447:
----------------------------------------

{panel:title=Branch: [pull/8949/head] Base: [master] : No blockers found!|borderStyle=dashed|borderColor=#ccc|titleBGColor=#D6F7C1}{panel}
{panel:title=Branch: [pull/8949/head] Base: [master] : New Tests (1)|borderStyle=dashed|borderColor=#ccc|titleBGColor=#D6F7C1}
{color:#00008b}Cache 7{color} [[tests 1|https://ci.ignite.apache.org/viewLog.html?buildId=5942752]]
* {color:#013220}IgniteCacheWithIndexingAndPersistenceTestSuite: CleanupIndexTreeCheckpointFailoverTest.testCorruptedTree - PASSED{color}

{panel}
[TeamCity *--&gt; Run :: All* Results|https://ci.ignite.apache.org/viewLog.html?buildId=5942792&amp;buildTypeId=IgniteTests24Java8_RunAll]

> 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)