Sorry for missing your message, Ales!

Anyway, good news, we found out why the test was taking so long: the Message instance passed to dispatcher.cast() already had a destination address set, and JGroups only sent the message to that address, even though the dispatcher was waiting for a reply from the local node as well.

Sanne has verified that setting the destination in the message to null fixes things, and I have been able to verify this by modifying Bela's test.

Sanne, a few notes:
1) The cast() call doesn't throw a TimeoutException if one of the targets didn't reply - if you want to throw an exception, you need to check wasReceived() on each element of the responses list.
2) For ChannelMessageSender as well, channel.send() may throw a TimeoutException or not - depending on the value of RSVP.throw_exception_on_timeout. Because of this and the potential conflict with Infinispan on RSVP.ack_on_delivery, I would strongly recommend using the DispatcherMessageSender all the time.
3) Because Infinispan calls channel.setDiscardOwnMessages(false) in 5.3.0.Alpha1, and channel.setDiscardOwnMessages(true) in all previous versions, whether the local node receives a broadcast message depends on the Infinispan version running on the same channel. If you don't actually need the local node to process the message, you should use options.setExclusionList(dispatcher.getChannel().getAddress()) to make it obvious. If you do need the local node to process the message, you may need to process the message yourself when channel.getDiscardOwnMessages() returns true.




On Mon, Apr 15, 2013 at 3:44 PM, Ales Justin <ales.justin@gmail.com> wrote:
Looking at your workaround, I think you actually set the response mode to GET_NONE (because that's the default value in RequestOptions), so you're back to sending an asynchronous request.

That was my question as well:

Shouldn't this "synchronous" flag still be used?


e.g.
if (synchronous) {
int size = dispatcher.getChannel().getView().getMembers().size();
RequestOptions options = RequestOptions.SYNC();
options.setRspFilter( new WaitAllFilter( size ) );
} else {
options = RequestOptions.ASYNC();
}



_______________________________________________
infinispan-dev mailing list
infinispan-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/infinispan-dev