You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by kf...@apache.org on 2015/11/25 06:39:26 UTC

svn commit: r1716305 - in /tomcat/trunk: java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java webapps/docs/changelog.xml

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);
         synchronized (mapMembers) {
-            if (!mapMembers.containsKey(member) ) {
-                mapMembers.put(member, Long.valueOf(System.currentTimeMillis()));
+            if (!mapMembers.containsKey(mapMember) ) {
+                mapMembers.put(mapMember, Long.valueOf(System.currentTimeMillis()));
                 memberAdded = true;
             }
         }

Modified: tomcat/trunk/webapps/docs/changelog.xml
URL: http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1716305&r1=1716304&r2=1716305&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/trunk/webapps/docs/changelog.xml Wed Nov 25 05:39:26 2015
@@ -145,6 +145,11 @@
         if the static member that is registered to the remove suspect list has
         disappeared. (kfujino)
       </fix>
+      <fix>
+        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. (kfujino)
+      </fix>
     </changelog>
   </subsection>
   <subsection name="jdbc-pool">



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


Re: svn commit: r1716305 - in /tomcat/trunk: java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java webapps/docs/changelog.xml

Posted by Keiichi Fujino <kf...@apache.org>.
2015-11-25 15:39 GMT+09:00 Konstantin Kolinko <kn...@gmail.com>:

> 2015-11-25 8:39 GMT+03:00  <kf...@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-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: dev-help@tomcat.apache.org
>
> --
> Keiichi.Fujino
> <de...@tomcat.apache.org>
> <de...@tomcat.apache.org>
>

Re: svn commit: r1716305 - in /tomcat/trunk: java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java webapps/docs/changelog.xml

Posted by Konstantin Kolinko <kn...@gmail.com>.
2015-11-25 8:39 GMT+03:00  <kf...@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)

>          synchronized (mapMembers) {
> -            if (!mapMembers.containsKey(member) ) {
> -                mapMembers.put(member, Long.valueOf(System.currentTimeMillis()));
> +            if (!mapMembers.containsKey(mapMember) ) {
> +                mapMembers.put(mapMember, Long.valueOf(System.currentTimeMillis()));
>                  memberAdded = true;
>              }
>          }
>
> Modified: tomcat/trunk/webapps/docs/changelog.xml
> URL: http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1716305&r1=1716304&r2=1716305&view=diff
> ==============================================================================
> --- tomcat/trunk/webapps/docs/changelog.xml (original)
> +++ tomcat/trunk/webapps/docs/changelog.xml Wed Nov 25 05:39:26 2015
> @@ -145,6 +145,11 @@
>          if the static member that is registered to the remove suspect list has
>          disappeared. (kfujino)
>        </fix>
> +      <fix>
> +        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. (kfujino)
> +      </fix>
>      </changelog>
>    </subsection>
>    <subsection name="jdbc-pool">
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: dev-help@tomcat.apache.org
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org