You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ignite.apache.org by "Anton Kalashnikov (Jira)" <ji...@apache.org> on 2021/01/11 13:59:00 UTC

[jira] [Created] (IGNITE-13972) Clear the item id before moving the page to the reuse bucket

Anton Kalashnikov created IGNITE-13972:
------------------------------------------

             Summary: Clear the item id before moving the page to the reuse  bucket
                 Key: IGNITE-13972
                 URL: https://issues.apache.org/jira/browse/IGNITE-13972
             Project: Ignite
          Issue Type: Task
            Reporter: Anton Kalashnikov


There is assert - 'Incorrectly recycled pageId in reuse bucket:'(org.apache.ignite.internal.processors.cache.persistence.freelist.PagesList#takeEmptyPage). This assert sometimes fails. The reason is not clear because the same condition checked before putting this page in to reuse bucket. (Perhaps we have more than 1 link to this page?)

There is an idea to reset item id to 1 before the putting page to reuse bucket in order of decreasing the possible invariants which can break this assert. It is already true for all data pages but item id can be still more than 1 if it is not a data page(ex. inner page).

After that, we can change this assert from checking the range to checking the equality to 1 which theoretically will help us detect the problem fastly.

Maybe it is also not a bad idea to set itemId to an impossible value(ex. 0 or 255). Then we can add the assert on every taking from the free list which checks that itemId more than 0 and if it is false that means we have a link to the reuse bucket page from the bucket which is not reused. Which is a bug.



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