public interface PartitionLostListener extends EventListener
When the cluster is initialized, each node becomes owner of some of the partitions, and backup of the some other partitions. We call owner of partition "primary replica" and backup nodes "backup replicas". Partition replicas are ordered. A primary replica node keeps all data that is mapped to the partition. If a Hazelcast data structure is configured with 1 backup, its data is put into the primary replica and the first backup replica. Similarly, data of a Hazelcast data structure that is configured with 2 backups is put into the primary replica, the first backup replica, and the second backup replica. The idea is same for higher backup counts.
When a node fails, primary replicas of its partitions are lost. In this case, ownership of each partition owned by the unreachable node is transferred to the first available backup node. After this point, other backup nodes sync themselves from the new partition owner node in order to populate the missing backup data. This sync is only happen when backup partition replica versions are not equal to the primary ones.
In this context, the partition loss detection algorithm works as
PartitionLostEvent.lostBackupCount denotes the replica
index up to the which partition replicas are lost.
- 0 means that only the primary replica is lost. In other words, the node
which owns the partition is unreachable, hence removed from the cluster.
If there is a data structure configured with no backups, its data is
lost for this partition.
- 1 means that both the primary replica and the first backup replica are
lost. In other words, the partition owner node and the first backup node
have became unreachable. If a data structure is configured with less
than 2 backups, its data is lost for this partition.
- The idea works same for higher backup counts.
Please note that node failures that do not involve a primary replica
does not lead to partition lost events. For instance, if a backup node
crashes when owner of the partition is still alive, a partition lost
event is not fired. In this case, Hazelcast tries to assign a new backup
replica to populate the missing backup.
void partitionLost(PartitionLostEvent event)
event- the event that contains the partition ID and the backup count that has been lost
Copyright © 2021 Hazelcast, Inc.. All Rights Reserved.