[
https://issues.apache.org/jira/browse/IGNITE-17582?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Alexandr Shapkin resolved IGNITE-17582.
---------------------------------------
Resolution: Won't Do
Not actual.
> Introduce mutipleReplica ReplicaRequests together with grouped
> TxCleanupReplicaRequest processing
> -------------------------------------------------------------------------------------------------
>
> Key: IGNITE-17582
> URL: https://issues.apache.org/jira/browse/IGNITE-17582
> Project: Ignite
> Issue Type: Improvement
> Reporter: Alexander Lapin
> Priority: Major
> Labels: ignite-3
>
> h3. Motivation
> Within the scope of tx commit process, enlisted partitions are grouped
> together by primary replica cluster node, however during the tx finish
> processing brand new TxCleanupReplicaRequest is sent to each partition even
> colocated ones within same cluster node:
>
> {code:java}
> public CompletableFuture<Void> cleanup(
> ClusterNode recipientNode,
> List<String> replicationGroupIds,
> UUID txId,
> boolean commit,
> HybridTimestamp commitTimestamp
> ) {
> // TODO: https://issues.apache.org/jira/browse/IGNITE-17582 Grouping
> replica requests.
> replicationGroupIds.forEach(groupId -> {
> try {
> replicaService.invoke(
> recipientNode,
> FACTORY.txCleanupReplicaRequest()
> .groupId(groupId)
> .txId(txId)
> .commit(commit)
> .commitTimestamp(commitTimestamp)
> .build()
> );
> } catch (NodeStoppingException e) {
> throw new TransactionException("Failed to perform tx cleanup,
> node is stopping.");
> }
> });
> return null;
> } {code}
> Seems that we may introduce multipleReplicationGroups in addition to single
> ones that we already have in order to perform such collocated based requests.
> h3. Definition of Done
> * General solution for groupping collocated replica requests is introduced.
> * TxCleanupReplicaRequests are grouped on recipient node basis.
> h3. Implementation Notes
> Generally speaking, it's required to:
> * Introduce new interface MutipleReplicasReplicaRequest with
> Collection<String> groupsId() in addition to already existing ReplicaRequest
> with single String groupId();
> * Implement proper multiple replicas fun out and aggregation(including
> expcetion handling) of the results within
> org.apache.ignite.network.NetworkMessageHandler#onReceived
> * Send such new TxCleanupReplicaRequests one per cluster node instead of one
> per replica, in other words rework
> org.apache.ignite.internal.tx.impl.TxManagerImpl#cleanup
>
--
This message was sent by Atlassian Jira
(v8.20.10#820010)