<html><head><meta http-equiv="Content-Type" content="text/html charset=iso-8859-1"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Nice, great job guys!<div><br></div><div>@Sanne: are you gonna apply all Dan's suggestions to that branch?</div><div>e.g. the exclusion list, etc</div><div><br></div><div>-Ales</div><div><br><div><div>On Apr 15, 2013, at 8:27 PM, Dan Berindei &lt;<a href="mailto:dan.berindei@gmail.com">dan.berindei@gmail.com</a>&gt; wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div dir="ltr"><div><div><div><div><div><div>Sorry for missing your message, Ales!<br><br></div>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. <br>

<br>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.<br><br></div>Sanne, a few notes:<br></div>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.<br>

</div>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.<br>

</div>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.<br>

<br></div><br><div><div><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Apr 15, 2013 at 3:44 PM, Ales Justin <span dir="ltr">&lt;<a href="mailto:ales.justin@gmail.com" target="_blank">ales.justin@gmail.com</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div style="word-wrap:break-word"><div class="im"><blockquote type="cite"><div dir="ltr"><div class="gmail_extra">

<div class="gmail_quote">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.<br>



</div></div></div></blockquote><br></div><div>That was my question as well:</div><div class="im"><div><br></div><div><blockquote type="cite"><div style="word-wrap:break-word"><div style="word-wrap:break-word">

Shouldn't this "synchronous" flag still be used?<div><br></div><div><a href="https://github.com/Sanne/hibernate-search/blob/077f29c245d2d6e960cd6ab59ff58752320d5658/hibernate-search-engine/src/main/java/org/hibernate/search/backend/impl/jgroups/DispatcherMessageSender.java#L57" target="_blank">https://github.com/Sanne/hibernate-search/blob/077f29c245d2d6e960cd6ab59ff58752320d5658/hibernate-search-engine/src/main/java/org/hibernate/search/backend/impl/jgroups/DispatcherMessageSender.java#L57</a></div>

<div><br></div><div>e.g.</div><div>if (synchronous) {</div><div><span style="white-space:pre-wrap">                int size = dispatcher.getChannel().getView().getMembers().size();</span></div><div><span style="white-space:pre-wrap">                RequestOptions options = RequestOptions.SYNC();</span></div>

<div><span style="white-space:pre-wrap">                options.setRspFilter( new WaitAllFilter( size ) );</span></div><div>} else {</div><div><span style="white-space:pre-wrap">        </span>options =&nbsp;<span style="white-space:pre-wrap">RequestOptions.ASYNC();</span></div>

<div>}</div></div></div></blockquote><div><div style="word-wrap:break-word"><div style="word-wrap:break-word"><br></div></div></div></div><br></div></div><br>_______________________________________________<br>

infinispan-dev mailing list<br>
<a href="mailto:infinispan-dev@lists.jboss.org">infinispan-dev@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/infinispan-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/infinispan-dev</a><br></blockquote></div><br></div></div>

</div></div>
_______________________________________________<br>infinispan-dev mailing list<br><a href="mailto:infinispan-dev@lists.jboss.org">infinispan-dev@lists.jboss.org</a><br>https://lists.jboss.org/mailman/listinfo/infinispan-dev</blockquote></div><br></div></body></html>