Mirza Aliev created IGNITE-20199:
------------------------------------

             Summary: Do not chain updating rebalance assignments future in 
DistributionZoneRebalanceEngine#onUpdateReplicas 
                 Key: IGNITE-20199
                 URL: https://issues.apache.org/jira/browse/IGNITE-20199
             Project: Ignite
          Issue Type: Bug
            Reporter: Mirza Aliev


After IGNITE-19506 was merged, it added the regression. 

Previously we haven't returned future, that updates rebalance pending keys, in 
\{{DistributionZoneRebalanceEngine#onUpdateReplicas}}. It was done because 
otherwise we would block configuration notification thread until all partitions 
would updates theirs rebalance assignments keys in metastorage. 

 

Unfortunately, IGNITE-19506 has brought this blockage

 
{code:java}
private CompletableFuture<?> 
onUpdateReplicas(ConfigurationNotificationEvent<Integer> replicasCtx) {
...
...

        return distributionZoneManager.dataNodes(replicasCtx.storageRevision(), 
zoneCfg.zoneId())
                .thenCompose(dataNodes -> {
...

                    for (TableView tableCfg : tableViews) {
                       ...
                        CompletableFuture<?>[] partitionFutures = 
RebalanceUtil.triggerAllTablePartitionsRebalance(
                                tableDescriptor,
                                zoneDescriptor,
                                dataNodes,
                                replicasCtx.storageRevision(),
                                metaStorageManager
                        );

                        tableFutures.add(allOf(partitionFutures));
                    }

                    return 
allOf(tableFutures.toArray(CompletableFuture[]::new));
                });
    } finally {
        busyLock.leaveBusy();
    }
} {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to