Author: kfujino Date: Mon May 9 08:36:16 2016 New Revision: 1742894 URL: http://svn.apache.org/viewvc?rev=1742894&view=rev Log: In ping processing in the replication map, send not the INIT message but the newly introduced PING message.
Modified: tomcat/tc7.0.x/trunk/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml Modified: tomcat/tc7.0.x/trunk/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java?rev=1742894&r1=1742893&r2=1742894&view=diff ============================================================================== --- tomcat/tc7.0.x/trunk/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java (original) +++ tomcat/tc7.0.x/trunk/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java Mon May 9 08:36:16 2016 @@ -264,7 +264,7 @@ public abstract class AbstractReplicated protected void ping(long timeout) throws ChannelException { //send out a map membership message, only wait for the first reply MapMessage msg = new MapMessage(this.mapContextName, - MapMessage.MSG_INIT, + MapMessage.MSG_PING, false, null, null, @@ -279,7 +279,23 @@ public abstract class AbstractReplicated (channelSendOptions), (int) accessTimeout); for (int i = 0; i < resp.length; i++) { - memberAlive(resp[i].getSource()); + MapMessage mapMsg = (MapMessage)resp[i].getMessage(); + try { + mapMsg.deserialize(getExternalLoaders()); + State state = (State) mapMsg.getValue(); + if (state.isAvailable()) { + memberAlive(resp[i].getSource()); + } else { + if (log.isInfoEnabled()) + log.info("Member[" + resp[i].getSource() + "] is not available yet."); + } + } catch (IOException x) { + log.error("Unable to deserialize MapMessage.", x); + return; + } catch (ClassNotFoundException x) { + log.error("Unable to deserialize MapMessage.", x); + return; + } } } catch (ChannelException ce) { // Handle known failed members @@ -577,6 +593,13 @@ public abstract class AbstractReplicated } //synchronized } + // ping + if (mapmsg.getMsgType() == MapMessage.MSG_PING) { + mapmsg.setValue(state); + mapmsg.setPrimary(channel.getLocalMember(false)); + return mapmsg; + } + return null; } @@ -1373,6 +1396,7 @@ public abstract class AbstractReplicated public static final int MSG_STATE_COPY = 10; public static final int MSG_ACCESS = 11; public static final int MSG_NOTIFY_MAPMEMBER = 12; + public static final int MSG_PING = 13; private byte[] mapId; private int msgtype; @@ -1412,6 +1436,7 @@ public abstract class AbstractReplicated case MSG_COPY: return "MSG_COPY"; case MSG_ACCESS: return "MSG_ACCESS"; case MSG_NOTIFY_MAPMEMBER: return "MSG_NOTIFY_MAPMEMBER"; + case MSG_PING: return "MSG_PING"; default : return "UNKNOWN"; } } Modified: tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml?rev=1742894&r1=1742893&r2=1742894&view=diff ============================================================================== --- tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml (original) +++ tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml Mon May 9 08:36:16 2016 @@ -161,6 +161,11 @@ Ensure that the ping is not executed during the start/stop of the replication map. (kfujino) </fix> + <fix> + In ping processing in the replication map, send not the + <code>INIT</code> message but the newly introduced <code>PING</code> + message. (kfujino) + </fix> </changelog> </subsection> <subsection name="Other"> --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org