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

Anton Kalashnikov commented on IGNITE-12496:
--------------------------------------------

 Changes look good to me. [~agoncharuk] can you help with merge, please.

> Index deletion blocks checkpoint for all of its duration, which can cause 
> "Critical system error: system critical thread blocked"
> ---------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: IGNITE-12496
>                 URL: https://issues.apache.org/jira/browse/IGNITE-12496
>             Project: Ignite
>          Issue Type: Bug
>            Reporter: Denis Chudov
>            Assignee: Denis Chudov
>            Priority: Major
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> GridH2Table#removeIndex(Session, Index) acquires checkpoint read lock and 
> releases it only after full completion of deletion process. It happens 
> because H2TreeIndex#destroy requires to be run when checkpoint lock is held. 
> Meanwhile, checkpoint thread stops on Checkpointer#markCheckpointBegin, 
> trying to acquire write lock, and stays locked for all the time of index 
> deletion.
> The possible fix is that checkpoint read lock is periodically released while 
> index deletion is in progress. To avoid persistence corruption in case of 
> node crush in the middle of the process, we should put index root into some 
> persistent structure like index meta tree and remember it as "pending 
> delete". Then we must delete tree pages from leafs to root, this allows to 
> avoid links to deleted pages. When deletion is complete, tree root can be 
> removed from "pending delete".



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

Reply via email to