Another implementation could take the current view, and create a BitSet
with the size being the length of the view, and every bit corresponds to
the position of a member in the view, e.g.:
V1={A,B,C,D,E,F}, bitset={0,0,1,0,1,1} means that responses have been
received from C, E and F.
On 1/13/12 8:20 PM, Manik Surtani wrote:
Looking at IgnoreExtraResponsesValidityFilter - this seems to be a
scalability issue! It seems to copy a set of every address in the cluster and gradually
remove entries as responses come in. Isn't this a scalability issue? Since -
assuming a large cluster - for every prepare command, we create a collection, copy into it
the entire list of addresses (think hundreds of nodes x hundreds of concurrent threads)
only to "count down" on the responses. I'm almost certain there is a better
way to do this! :) Maybe even maintain a shared list of members (updated whenever there
is a view change) to test for responses from non-members, a counter, and assume that
members don't respond to the same request more than once?
Cheers
Manik
--
Manik Surtani
manik(a)jboss.org
twitter.com/maniksurtani
Lead, Infinispan
http://www.infinispan.org
--
Bela Ban
Lead JGroups (
http://www.jgroups.org)
JBoss / Red Hat