[infinispan-dev] Why does ClusteredGetResponseValidityFilter maintain pendingResponders?

Manik Surtani manik at jboss.org
Thu Jul 9 08:24:38 EDT 2009


On 9 Jul 2009, at 13:15, Bela Ban wrote:

>
>
> Manik Surtani wrote:
>>
>> On 9 Jul 2009, at 12:08, Bela Ban wrote:
>>
>>> What's the issue here ?
>>
>> The issue is that the RspFilter never finds a valid response  
>> (assume that this is because the "right answer" does not exist).
>
> So if you have 10 members when you send the request, and expect 10  
> responses, if none of them are acceptable, simply return false at  
> the 10th response from needMoreResponses().
>
> The problem is that if you install a RspFilter, it will *override*  
> the response collection normally done in JGroups, ie. normally we'd  
> return after 10 responses (with GET_ALL and/or a timeout).
>
>
> OK, so we have either the normal completion checking or your  
> overridden needsMoreResponses() callback.
>
> Currently the logical is as follows:
>
> if( rsp filter installed): call needsMoreResponses()
> else: regular completion check
>
> I could change this, and essentially OR these 2 checks together, as  
> follows:
>
> boolean regular_complete=regular completion checking
> boolean needs_more_rsps=call needsMoreResponses()
>
> boolean complete=regular_complete || needs_more_responses;
>
> This would return after 10 responses even if needsMoreResponses()  
> returns true.
>
> Note that this won't work though isAcceptable() flags 1 or more  
> responses as false. In this case, the regular response completion  
> check would return false.
>
>> In this case, needMoreResponses() would always return true.  I  
>> remember that in JBC3, when this happened, JGroups timed out  
>> waiting for responses even though all responses had come in; the  
>> filter just rejected all of them.
>
> Correct. This is as designed.
>
>> I found that the workaround was for needMoreResponses() to return  
>> true if we hadn't found the right answer AND there were more  
>> responses we hadn't considered yet.
>
> Exactly
>
>> Otherwise return false, since you know there are no more responses  
>> to consider anyway.
>
> Yes. Let me know if you think the above change would help. Again,  
> this change would only help if isAcceptable() returns true !

I am happy with the current behaviour; I don't think it is necessarily  
incorrect.  Just that I didn't initially expect it to work that way.   
Perhaps some Javadocs detailing this in RspFilter may make things more  
explicit.

Cheers
--
Manik Surtani
manik at jboss.org
Lead, Infinispan
Lead, JBoss Cache
http://www.infinispan.org
http://www.jbosscache.org







More information about the infinispan-dev mailing list