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> >