[infinispan-dev] Question about ISPN-2376 "KeyAffinityServiceImpl.getKeyForAddress() seems to loop forever when DefaultConsistentHash is created for the non-local node owner"

Dan Berindei dan.berindei at gmail.com
Wed Oct 10 06:47:30 EDT 2012


Hi Scott

On Wed, Oct 10, 2012 at 6:20 AM, Scott Marlow <smarlow at redhat.com> wrote:

> I'm trying to understand more about whether it makes sense for a
> DefaultConsistentHash to be created with a non-local owner specified in
> the DefaultConsistentHash constructor "segmentOwners" parameter.
>
>
It definitely makes sense for such a DefaultConsistentHash to exist while
the cache is starting. But by the time the cache has started (i.e.
getCache() has returned), it should have been replaced with a
DefaultConsistentHash that contains the local node as well.



> During some AS7 cluster testing that I'm running on my machine, I'm
> seeing the test stall because we loop endlessly in
> KeyAffinityServiceImpl.getKeyForAddress().  We loop because
> KeyAffinityServiceImpl.generateKeys() doesn't add any keys.
>
> We don't generate any keys because
> DefaultConsistentHash.locatePrimaryOwnerForSegment() returns address
> "node-1/web" which never matches the local nodes filter
> (KeyAffinityServiceImpl.interestedInAddress() only filters for local
> owners via "node-0/web").
>
> http://pastie.org/5027574 shows the call stack for the
> DefaultConsistentHash constructor that is the same instance that is used
> above.  If you look at the call stack, it looks like the
> DefaultConsistentHash instance may of being serialized on the other node
> and sent over (which would explain why its owner is "node-1/web" but
> still not sure why/how it comes into play with local
> KeyAffinityServiceImpl.generateKeys()).
>
>
My guess is you're able to access the cache before it has finished
starting, and the KeyAffinityService doesn't know how to deal with a cache
that doesn't have any local state yet. Again, this should not happen -
getCache() should not return that soon - but it could be that it does
happen when multiple threads try to start the same cache in parallel. Can
you post logs with TRACE enabled for org.infinispan and/or a link to your
test code?

Cheers
Dan
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/infinispan-dev/attachments/20121010/bce0a4d6/attachment.html 


More information about the infinispan-dev mailing list