Ok. Here is what is going on. It looks like sending a message is connected with having resources in the cluster. Once a resource is created, the message seems to go to the one live instance in the cluster.

The root cause of this behavior is that Criteria can only pick between EXTERNALVIEW and IDEALSTATES as data sources. So instances that do not have a resource mapped to it will never satisfy any criteria. Is this by design?

If I wanted to send a message to every live instance, how would I go about doing that?

Thanks,
Vinayak



On 10/7/13 10:30 PM, Zhen Zhang wrote:
Hi, could you try allParticipantsCriteria.setSelfExcluded(false), by
default selfExcluded is true and maybe you are sending from the only
liveInstance in the cluster, so no liveInstance matches the criteria.

Thanks,
Jason


On Mon, Oct 7, 2013 at 9:30 PM, Vinayak Borkar <[email protected]> wrote:

Hi Kishore,


As suspected, not setting resource and partition did not help. Any other
ideas?

Thanks,

Vinayak


On 10/7/13 7:04 PM, kishore g wrote:

Hi Vinayak,

Why is resource and partition empty string? if you want to send all live
instances irrespective what resource/partition they do not set it.

Criteria allParticipantsCriteria = new Criteria();
allParticipantsCriteria.****setInstanceName("%");
allParticipantsCriteria.****setRecipientInstanceType(****InstanceTyp
e.PARTICIPANT);

can you try this

Thanks,
Kishore G


On Mon, Oct 7, 2013 at 6:58 PM, Vinayak Borkar <[email protected]>
wrote:

  Hi,


I need to send a message to all live instances in a Helix cluster. I set
the Criteria as follows:

Criteria allParticipantsCriteria = new Criteria();
allParticipantsCriteria.****setInstanceName("%");
allParticipantsCriteria.****setRecipientInstanceType(**
InstanceType.PARTICIPANT);
allParticipantsCriteria.****setResource("");
allParticipantsCriteria.****setPartition("");


However, the number of recipients turns out to be 0. I also tried
changing
the datasource in the criteria to be IDEALSTATES using the code below:

allParticipantsCriteria.****setDataSource(DataSource.****IDEALSTATES);


But no joy.

Please note that I connect to Helix using an administrator role. When
listing the live instances using the helix-admin client script I do see
one
live instance.

Any ideas on what could be going wrong?

Thanks,
Vinayak






Reply via email to