вт, 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

Reply via email to