[
https://issues.apache.org/jira/browse/IGNITE-20692?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Aleksandr Polovtcev updated IGNITE-20692:
-----------------------------------------
Fix Version/s: 3.0.0-beta2
> Introduce Partition lifecycle events
> ------------------------------------
>
> Key: IGNITE-20692
> URL: https://issues.apache.org/jira/browse/IGNITE-20692
> Project: Ignite
> Issue Type: Improvement
> Reporter: Aleksandr Polovtcev
> Assignee: Aleksandr Polovtcev
> Priority: Major
> Labels: ignite-3
> Fix For: 3.0.0-beta2
>
> Time Spent: 0.5h
> Remaining Estimate: 0h
>
> I propose to introduce a mechanism for producing and consuming events related
> to the lifecycle of Partitions (a.k.a. Replicas). This mechanism can useful
> for other components, such as Index Manager to track which indices should be
> created or dropped because the corresponding partition has been moved.
> I imagine this mechanism as follows:
> # Make {{ReplicaManager}} extend {{AbstractEventProducer}};
> # Create an enum for Replica-related events:
> {code:java}
> public enum LocalReplicaEvent implements Event {
> /**
> * Fired after a replica has been started on the local node.
> */
> AFTER_REPLICA_CREATED,
> /**
> * Fired before a replica has been stopped on the local node.
> */
> BEFORE_REPLICA_STOPPED;
> }
> {code}
> # Create a class for these events' parameters. I believe we only need the
> {{ReplicationGroupId}} at this point.
> {code:java}
> public class LocalReplicaEventParameters extends EventParameters {
> /** ID of the created replica. */
> private final ReplicationGroupId groupId;
> }
> {code}
> These events should be fired by the Replica Manager (I believe the correct
> places would be {{ReplicaManager#startReplica}} and
> {{ReplicaManager#stopReplica}}).
> Also note that notification methods return CompletableFutures. These futures
> should block the corresponding operation (adding the new Replica to the
> ReplicaManager#replicas map or stopping a Replica). This will allow to obtain
> a happens-before relationship between the events and their listeners.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)