[ 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)