The ideal state will always remain empty. check the external view, it
should reflect the ideal state you computed.

On Tue, Mar 10, 2020 at 8:01 AM Geoffroy Fouquier <
[email protected]> wrote:

>
> Hello,
>
>   I am trying to define a user-defined balancer following the tutorial
> on helix web-page. I defined a simple balancer (a modulo ; based on
> TestCustomizedIdealStateRebalancer.TestRebalancer) and configure the
> balancer with :
>
> ---8<---
>
> IdealState idealState = helixAdmin.getResourceIdealState(clusterName,
> resourceName);
> idealState.setRebalanceMode(IdealState.RebalanceMode.USER_DEFINED);
> idealState.setRebalancerClassName(balancerClassName);
> helixAdmin.setResourceIdealState(clusterName, resourceName, idealState);
>
> ---8<---
>
> I have a controller running on a standalone cluster with 3 instances).
> Before the rebalance, resource looks like this :
>
> IdealState for crawlDB:
> {
>    "id" : "crawlDB",
>    "mapFields" : {
>    },
>    "listFields" : {
>    },
>    "simpleFields" : {
>      "IDEAL_STATE_MODE" : "AUTO",
>      "NUM_PARTITIONS" : "20",
>      "REBALANCER_CLASS_NAME" : "com.exensa.wdl.controller.PerDiskBalancer",
>      "REBALANCE_MODE" : "USER_DEFINED",
>      "REBALANCE_STRATEGY" : "DEFAULT",
>      "REPLICAS" : "0",
>      "STATE_MODEL_DEF_REF" : "MasterSlave",
>      "STATE_MODEL_FACTORY_NAME" : "DEFAULT"
>    }
> }
>
> My custom rebalancer is called :
>
>   - PerDiskBalancer / init
>   - computeNewIdealState
>   - nodes: [standalone-1.localhost, standalone-3.localhost,
> standalone-2.local
> host] partitions: [crawlDB_0, crawlDB_1, crawlDB_10, crawlDB_11,
> crawlDB_12, crawlDB_13, crawlDB_14, crawlDB_15, crawlDB_16, crawlDB_17,
> crawlDB_18, crawlDB_19, crawlDB_2, crawlDB_3, crawlDB_4, crawlDB_5,
> crawlDB_6, craw
> lDB_7, crawlDB_8, crawlDB_9]
>   - set partition preference list for crawlDB_0 to standalone-1.localhost
>   - set instance state map for partition crawlDB_0 to
> standalone-1.localhost
>   - set partition preference list for crawlDB_1 to standalone-3.localhost
> [...]
>
>   - set instance state map for partition crawlDB_8 to
> standalone-1.localhost
>   - set partition preference list for crawlDB_9 to standalone-3.localhost
>   - set instance state map for partition crawlDB_9 to
> standalone-3.localhost
>
> but the resulting IdealState doesn't have any mapping :
>
> IdealState for crawlDB:
>
> {
>    "id" : "crawlDB",
>    "mapFields" : {
>      "crawlDB_0" : {
>      },
>      "crawlDB_1" : {
>      },
>      "crawlDB_10" : {
>      },
>      "crawlDB_11" : {
>      },
>      "crawlDB_12" : {
>      },
>      "crawlDB_13" : {
>      },
>      "crawlDB_14" : {
>      },
>      "crawlDB_15" : {
>      },
>      "crawlDB_16" : {
>      },
>      "crawlDB_17" : {
>      },
>      "crawlDB_18" : {
>      },
>      "crawlDB_19" : {
>      },
>      "crawlDB_2" : {
>      },
>      "crawlDB_3" : {
>      },
>      "crawlDB_4" : {
>      },
>      "crawlDB_5" : {
>      },
>      "crawlDB_6" : {
>      },
>      "crawlDB_7" : {
>      },
>      "crawlDB_8" : {
>      },
>      "crawlDB_9" : {
>      }
>    },
>    "listFields" : {
>      "crawlDB_0" : [ ],
>      "crawlDB_1" : [ ],
>      "crawlDB_10" : [ ],
>      "crawlDB_11" : [ ],
>      "crawlDB_12" : [ ],
>      "crawlDB_13" : [ ],
>      "crawlDB_14" : [ ],
>      "crawlDB_15" : [ ],
>      "crawlDB_16" : [ ],
>      "crawlDB_17" : [ ],
>      "crawlDB_18" : [ ],
>      "crawlDB_19" : [ ],
>      "crawlDB_2" : [ ],
>      "crawlDB_3" : [ ],
>      "crawlDB_4" : [ ],
>      "crawlDB_5" : [ ],
>      "crawlDB_6" : [ ],
>      "crawlDB_7" : [ ],
>      "crawlDB_8" : [ ],
>      "crawlDB_9" : [ ]
>    },
>    "simpleFields" : {
>      "IDEAL_STATE_MODE" : "AUTO",
>      "NUM_PARTITIONS" : "20",
>      "REBALANCER_CLASS_NAME" : "com.exensa.wdl.controller.PerDiskBalancer",
>      "REBALANCE_MODE" : "USER_DEFINED",
>      "REBALANCE_STRATEGY" : "DEFAULT",
>      "REPLICAS" : "1",
>      "STATE_MODEL_DEF_REF" : "MasterSlave",
>      "STATE_MODEL_FACTORY_NAME" : "DEFAULT"
>    }
> }
>
> did I miss something ?
>
> Thanks !
>
>
>
>
>

Reply via email to