Hi,

Current state will not show dead replicas. You need to use previous
idealstate to derive that info. The logic will be something like this

computeResource(.....) {
  List<Instances> instances =
previousIdealState.getInstancesForPartition(P0)
foreach instance
  if(!liveInstances.contain(instance)){
    //NEED TO ASSIGN ANOTHER INSTANCE TO FOR THIS PARTITION
  }
}

This allows your logic to be idempotent and not depend on incremental
changes.

thanks,
Kishore G

On Thu, Apr 28, 2016 at 4:27 PM, Neutron sharc <[email protected]>
wrote:

> Hi team,
>
> in USER_DEFINED rebalance mode, the callback computeResourceMapping()
> accepts a “currentState”.  Does this variable include replicas on a
> dead participant ?
>
> For example, my resource has a partition P1 master replica on
> participant node1, a slave replica on participant node2.  When node1
> dies,  in callback computeResourceMapping() I retrieve P1’s replicas:
>
> Map<ParticipantId, State> replicas =
> currentState.getCurrentStateMap(resourceId, partitionId);
>
>
> Here the “replicas” includes only node2,  there is no entry for node1.
>
> However, I want to know all replicas including dead ones, so that I
> can know that a master replica is gone and I should failover to an
> existing slave, instead of starting a new master.
>
>
> Appreciate any comments!
>
>
> -Neutron
>

Reply via email to