The code looks good to me. Can you dump the external view from the code?.

manager.getClusterManagementTool().getExternalView("data2");



On Tue, Oct 2, 2018 at 3:20 PM Rob McKinnon <[email protected]> wrote:

> Kishore,
>
> Thanks for the reply. When I tried to implement, the instances always come
> back with an empty list. Can you let me know if I am missing something?
>
> Regards,
>
> Rob
>
>
> ExternalView for data2:
> {
>   "id" : "data2",
>   "mapFields" : {
>     "data2_0" : {
>       "localhost_7002" : "MASTER",
>       "localhost_7003" : "SLAVE"
>     },
>     "data2_1" : {
>       "localhost_7002" : "SLAVE",
>       "localhost_7003" : "MASTER"
>     },
>     "data2_2" : {
>       "localhost_7002" : "SLAVE",
>       "localhost_7003" : "MASTER"
>     },
>     "data2_3" : {
>       "localhost_7002" : "SLAVE",
>       "localhost_7003" : "MASTER"
>     },
>     "data2_4" : {
>       "localhost_7002" : "SLAVE",
>       "localhost_7003" : "MASTER"
>     },
>     "data2_5" : {
>       "localhost_7002" : "MASTER",
>       "localhost_7003" : "SLAVE"
>     }
>   },
>   "listFields" : {
>   },
>   "simpleFields" : {
>     "BUCKET_SIZE" : "0",
>     "IDEAL_STATE_MODE" : "AUTO",
>     "NUM_PARTITIONS" : "6",
>     "REBALANCE_MODE" : "SEMI_AUTO",
>     "REBALANCE_STRATEGY" : "DEFAULT",
>     "REPLICAS" : "3",
>     "STATE_MODEL_DEF_REF" : "MasterSlave",
>     "STATE_MODEL_FACTORY_NAME" : "DEFAULT"
>   }
> }
>
>
> Code Snippet:
>
> try {
>     HelixManager manager = HelixManagerFactory.getZKHelixManager(
>             Conf.CLUSTER_NAME,
>             "spec_1",
>             InstanceType.SPECTATOR,
>             Conf.ZK_ADDRESS);
>
>     manager.connect();
>
>
>     RoutingTableProvider routingTableProvider = new RoutingTableProvider();
>     manager.addExternalViewChangeListener(routingTableProvider);
>
>     List<InstanceConfig> list = routingTableProvider.getInstances("data2", 
> "data2_0",
>             "MASTER");
>
>     System.out.println(list.size()); // This is coming back as zero
>
>
> } catch (Exception e) {
>     e.printStackTrace();
> }
>
>
>
> On Tue, Oct 2, 2018 at 9:15 AM kishore g <[email protected]> wrote:
>
>> That's right.
>>
>>  manager = HelixManagerFactory.getZKHelixManager(clusterName, instanceName,
>>             InstanceType.SPECTATOR, zkAddr);
>>     zkAddress = zkAddr;
>>     helixClusterName = clusterName;
>>
>>         manager.connect();
>>         routingTableProvider = new RoutingTableProvider();
>>         manager.addExternalViewChangeListener(routingTableProvider);
>>
>>
>> to route
>>
>>   instances = routingTable.getInstances(resourceName, partionName, state);// 
>> state can be MASTER in your case
>>
>>
>>
>> On Tue, Oct 2, 2018 at 5:51 AM Rob McKinnon <[email protected]>
>> wrote:
>>
>>> Lets say that I have a cluster of 5 nodes with 10 partitions and I have
>>> an http request that needs to get data from a specific partition. What is
>>> the pattern to make sure requests are routed to the correct node, in this
>>> case a node that is the master of that particular partition?
>>>
>>> Regards,
>>>
>>> Rob
>>>
>>

Reply via email to