[
https://issues.apache.org/jira/browse/IGNITE-27113?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Ivan Bessonov updated IGNITE-27113:
-----------------------------------
Reviewer: Filipp Shergalis
> 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: 40m
> 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)