вт, 6 июл. 2021 г. в 15:57, ткаленко кирилл <tkalkir...@yandex.ru>:
> >> Can you clarify what it means to rename root index trees ? > Replacing > org.apache.ignite.internal.processors.cache.persistence.IndexStorageImpl.IndexItem, > changing IndexItem#idxName, but keeping fIndexItem#pageId. > Changing to what ? Some temporary name ? Can you give a detailed step by step description of the algorithm ? > > Suggested solution is not suitable for the situation: add index -> drop > index -> add an index. We can start deleting the last added index. > How can we do that, give me an example ? >From my understanding, the suggested solution should work ok for any number of create/drop sequences. > > 06.07.2021, 14:00, "Alexei Scherbakov" <alexey.scherbak...@gmail.com>: > > Can you clarify what it means to rename root index trees ? > > > > The simple solution which immediately comes to me is > > > > 1) write logical record on index creation - on reading it create an index > > during logical recovery > > 2) write logical record on index deletion - on reading it delete an index > > during logical recovery and start background clearing task with real root > > pages. > > > > Will it work for you ? > > > > вт, 6 июл. 2021 г. в 12:27, ткаленко кирилл <tkalkir...@yandex.ru>: > > > >> Hello everyone! > >> > >> Currently, dropping indexes consists of the following steps (based on > >> SchemaAbstractDiscoveryMessage's): > >> > >> Step 1: Removing the index from the SQL engine and starting > >> DurableBackgroundCleanupIndexTreeTask, which removes the index trees > in the > >> background; > >> Step 1.1: DurableBackgroundCleanupIndexTreeTask is added to the > >> metaStorage and removed after successful completion at the next > checkpoint. > >> > >> Step 2: Removing the index from the cache configuration and persist it. > >> > >> Problems: > >> > >> 1)We add and immediately delete the index, a checkpoint does not happen > >> and the node crashes, after restarting > >> DurableBackgroundCleanupIndexTreeTask will not be able to complete and > will > >> periodically restart due to the fact that it saves > >> DurableBackgroundCleanupIndexTreeTask#rootPages (root pages of index > trees) > >> that have not appeared; > >> > >> 2)After adding a DurableBackgroundCleanupIndexTreeTask node crashes, > after > >> restarting the node, the task will clean the index trees and there > will be > >> errors when using the index; > >> > >> 3)etc. > >> > >> Suggested solution: > >> > >> Rename the root index trees and write about this with a logical entry > in > >> the WAL and do this at the first start of > >> DurableBackgroundCleanupIndexTreeTask. > >> Thus, if we find the renamed root pages in task 1, we can clear the > index > >> trees to the end, otherwise the task can be completed. > >> Also, if we find that rename pages are present, and the step 2 has not > >> been completed, then we can start rebuilding the indexes. > >> > >> WDYT? > > > > -- > > > > Best regards, > > Alexei Scherbakov > -- Best regards, Alexei Scherbakov