You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Vyacheslav Koptilin (Jira)" <ji...@apache.org> on 2022/06/07 12:59:00 UTC

[jira] [Updated] (IGNITE-16063) Update partition pending/planned assignments on rebalance triggers

     [ https://issues.apache.org/jira/browse/IGNITE-16063?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Vyacheslav Koptilin updated IGNITE-16063:
-----------------------------------------
    Fix Version/s: 3.0.0-alpha5

> Update partition pending/planned assignments on rebalance triggers
> ------------------------------------------------------------------
>
>                 Key: IGNITE-16063
>                 URL: https://issues.apache.org/jira/browse/IGNITE-16063
>             Project: Ignite
>          Issue Type: Task
>            Reporter: Kirill Gusakov
>            Assignee: Mirza Aliev
>            Priority: Major
>              Labels: ignite-3
>             Fix For: 3.0.0-alpha5
>
>
> According to an algorithm from https://issues.apache.org/jira/browse/IGNITE-16020, we need to support partition assignments updates when:
> - baseline changed
> - number of partition replicas changed
> This update needs metastore multi-invoke feature and can be described as:
> {code}
> onBaselineEvent:
>     for table in tableCfg.tables():
>         for partition in table.partitions:
>             <inline metastoreInvoke>
>             
> onReplicaNumberChange:
>     with table as event.table:
>         for partitoin in table.partitions:
>             <inline metastoreInvoke>
> metastoreInvoke: // atomic metastore call through multi-invoke api
>     if empty(partition.change.trigger.revision) || partition.change.trigger.revision < event.revision:
>         if empty(partition.assignments.pending) && partition.assignments.stable != calcPartAssighments():
>             partition.assignments.pending = calcPartAssignments() 
>             partition.change.trigger.revision = event.revision
>         else:
>             if partition.assignments.pending != calcPartAssignments
>                 partition.assignments.planned = calcPartAssignments()
>                 partition.change.trigger.revision = event.revision
>             else
>                 remove(partition.assignments.planned)
>     else:
>         skip
> {code}
> (Phase 1)



--
This message was sent by Atlassian Jira
(v8.20.7#820007)