2015-11-25 15:39 GMT+09:00 Konstantin Kolinko <knst.koli...@gmail.com>:

> 2015-11-25 8:39 GMT+03:00  <kfuj...@apache.org>:
> > Author: kfujino
> > Date: Wed Nov 25 05:39:26 2015
> > New Revision: 1716305
> >
> > URL: http://svn.apache.org/viewvc?rev=1716305&view=rev
> > Log:
> > When using a static cluster, add the members that have been cached in
> the membership service to the map members list in order to ensure that the
> map member is a static member.
> >
> > Modified:
> >
>  tomcat/trunk/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java
> >     tomcat/trunk/webapps/docs/changelog.xml
> >
> > Modified:
> tomcat/trunk/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java
> > URL:
> http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java?rev=1716305&r1=1716304&r2=1716305&view=diff
> >
> ==============================================================================
> > ---
> tomcat/trunk/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java
> (original)
> > +++
> tomcat/trunk/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java
> Wed Nov 25 05:39:26 2015
> > @@ -733,9 +733,10 @@ public abstract class AbstractReplicated
> >          if ( member.equals(getChannel().getLocalMember(false)) ) return;
> >          boolean memberAdded = false;
> >          //select a backup node if we don't have one
> > +        Member mapMember = getChannel().getMember(member);
>
> Can "getChannel().getMember(member)" call return null? Using null
> value as a key for mapMembers looks wrong.
>
> E.g. I see that
> org.apache.catalina.tribes.membership.Membership.getMember(Member) may
> return null.
>
> The Membership.getMember(Member) method is not a Channel method, but
> it is used to implement
> DomainFilterInterceptor.getMember(Member mbr)
> NonBlockingCoordinator.getMember(Member mbr)
> TcpFailureDetector.getMember(Member mbr)
> MCastService.getMember(Member)
>
>
Thanks for the comments.

The "getChannel().getMember(member)" never return a null in most cases.
However, if static member has not been detected yet, the
"getChannel().getMember(member)" can return null.

So, I'll add null check.
if (mapMember == null) {
    // todo warn log
    return;
}
If null is returned, just return.
And then, the AbstractReplicatedMap.ping method will try to add map members
again.




>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
> For additional commands, e-mail: dev-h...@tomcat.apache.org
>
> --
> Keiichi.Fujino
> <dev-h...@tomcat.apache.org>
> <dev-h...@tomcat.apache.org>
>

Reply via email to