This is the simpleFields of my IS:

"simpleFields" : {
"IDEAL_STATE_MODE" : "AUTO",
"MAX_PARTITIONS_PER_INSTANCE" : "1",
"NUM_PARTITIONS" : "3",
"REBALANCER_CLASS_NAME" : "com.hcd.hcdadmin.M1Rebalancer",
"REBALANCE_MODE" : "USER_DEFINED",
"REPLICAS" : "3",
"STATE_MODEL_DEF_REF" : "M1StateModel",
"STATE_MODEL_FACTORY_NAME" : "DEFAULT"
}


On Mon, May 2, 2016 at 12:49 PM, kishore g <[email protected]> wrote:
> Can you paste the initial IS that you compute. I am mainly interested in
> the simple fields.
>
> On Mon, May 2, 2016 at 12:38 PM, Neutron sharc <[email protected]>
> wrote:
>
>> Thanks Kishore for your reply!
>>
>> What I see is that, a resource's ideal state becomes empty after
>> external view converges with the assignment.
>>
>> When I create a resource I compute an initial IS, and attach a
>> USER_DEFINED rebalancer.  After Helix stabilizes a resource,  its
>> "IDEALSTATES" mapFields is wiped off in zookeeper.  When the next
>> round of rebalancing starts,  computeResourceMapping() will always get
>> an empty idealState.
>>
>>
>>
>>
>> On Fri, Apr 29, 2016 at 1:16 PM, kishore g <[email protected]> wrote:
>> > 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