Denis Chudov created IGNITE-12496: ------------------------------------- Summary: 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
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)