You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Ivan Bessonov (Jira)" <ji...@apache.org> on 2025/11/20 10:02:00 UTC

[jira] [Updated] (IGNITE-27113) Parallel page acquiring with different IDS breaks page header invariants

     [ https://issues.apache.org/jira/browse/IGNITE-27113?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Ivan Bessonov updated IGNITE-27113:
-----------------------------------
    Component/s: storage engines ai3

> Parallel page acquiring with different IDS breaks page header invariants
> ------------------------------------------------------------------------
>
>                 Key: IGNITE-27113
>                 URL: https://issues.apache.org/jira/browse/IGNITE-27113
>             Project: Ignite
>          Issue Type: Bug
>          Components: storage engines ai3
>            Reporter: Ivan Bessonov
>            Assignee: Ivan Bessonov
>            Priority: Major
>              Labels: ignite-3
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> The scenario is the following:
>  * Persistent page memory
>  * We acquire the page without knowing its ID, meaning that our {{tag}} is different from the real one.
>  * Doing so, the system acquires segment write lock, inside of if it acquires a page write lock with a wrong tag, then releases segment write lock.
>  * In the short window of time after this we have a locked page, that can be acquired by a parallel thread. If that thread successfully acquires the page and tries to have a read lock on it with a valid tag, the attempt will fail. This is because the tag is still wrong.
>  * The side effects are unpredictable.
> What we need to achieve:
>  * "acquirePage" should only return the pointer when it has a correct values in the header. In particular, we need a correct value in the {{tag}} part of the {{lock}} part of the header.
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)