Author: kfujino
Date: Mon Dec 21 04:38:40 2015
New Revision: 1721085
URL: http://svn.apache.org/viewvc?rev=1721085&view=rev
Log:
Add support for the shutdown notification of local members in the static
cluster.
Modified:
tomcat/trunk/java/org/apache/catalina/tribes/group/interceptors/LocalStrings.properties
tomcat/trunk/java/org/apache/catalina/tribes/group/interceptors/StaticMembershipInterceptor.java
tomcat/trunk/webapps/docs/changelog.xml
Modified:
tomcat/trunk/java/org/apache/catalina/tribes/group/interceptors/LocalStrings.properties
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/tribes/group/interceptors/LocalStrings.properties?rev=1721085&r1=1721084&r2=1721085&view=diff
==============================================================================
---
tomcat/trunk/java/org/apache/catalina/tribes/group/interceptors/LocalStrings.properties
(original)
+++
tomcat/trunk/java/org/apache/catalina/tribes/group/interceptors/LocalStrings.properties
Mon Dec 21 04:38:40 2015
@@ -35,6 +35,7 @@ orderInterceptor.messageAdded.sameCounte
staticMembershipInterceptor.no.failureDetector=There is no TcpFailureDetector.
Automatic detection of static members does not work properly. By defining the
StaticMembershipInterceptor under the TcpFailureDetector, automatic detection
of the static members will work.
staticMembershipInterceptor.no.pingInterceptor=There is no TcpPingInterceptor.
The health check of static members does not work properly. By defining the
TcpPingInterceptor, the health check of static members will work.
staticMembershipInterceptor.sendLocalMember.failed=Local member notification
failed.
+staticMembershipInterceptor.sendShutdown.failed=Shutdown notification failed.
tcpFailureDetector.memberDisappeared.verify=Received memberDisappeared[{0}]
message. Will verify.
tcpFailureDetector.already.disappeared=Verification complete. Member already
disappeared[{0}]
tcpFailureDetector.member.disappeared=Verification complete. Member
disappeared[{0}]
Modified:
tomcat/trunk/java/org/apache/catalina/tribes/group/interceptors/StaticMembershipInterceptor.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/tribes/group/interceptors/StaticMembershipInterceptor.java?rev=1721085&r1=1721084&r2=1721085&view=diff
==============================================================================
---
tomcat/trunk/java/org/apache/catalina/tribes/group/interceptors/StaticMembershipInterceptor.java
(original)
+++
tomcat/trunk/java/org/apache/catalina/tribes/group/interceptors/StaticMembershipInterceptor.java
Mon Dec 21 04:38:40 2015
@@ -42,6 +42,10 @@ public class StaticMembershipInterceptor
76, 111, 99, 97, 108, 32, 83, 116, 97, 116, 105, 99, 77, 101, 109, 98,
101, 114, 32, 78,
111, 116, 105, 102, 105, 99, 97, 116, 105, 111, 110, 32, 68, 97, 116,
97};
+ protected static final byte[] MEMBER_STOP = new byte[] {
+ 76, 111, 99, 97, 108, 32, 83, 116, 97, 116, 105, 99, 77, 101, 109, 98,
101, 114, 32, 83,
+ 104, 117, 116, 100, 111, 119, 110, 32, 68, 97, 116, 97};
+
protected final ArrayList<Member> members = new ArrayList<>();
protected Member localMember = null;
@@ -74,6 +78,14 @@ public class StaticMembershipInterceptor
if (member != null) {
super.memberAdded(member);
}
+ } else if (msg.getMessage().getLength() == MEMBER_STOP.length &&
+ Arrays.equals(MEMBER_STOP, msg.getMessage().getBytes())) {
+ // receive member shutdown
+ Member member = getMember(msg.getAddress());
+ if (member != null) {
+ member.setCommand(Member.SHUTDOWN_PAYLOAD);
+ super.memberDisappeared(member);
+ }
} else {
super.messageReceived(msg);
}
@@ -169,6 +181,19 @@ public class StaticMembershipInterceptor
}
}
+ /**
+ * {@inheritDoc}
+ * <p>
+ * Sends local member shutdown.
+ */
+ @Override
+ public void stop(int svc) throws ChannelException {
+ // Sends local member shutdown.
+ Member[] members = getfirstInterceptor().getMembers();
+ sendShutdown(members);
+ super.stop(svc);
+ }
+
protected void sendLocalMember(Member[] members) {
if ( members == null || members.length == 0 ) return;
ChannelData data = new ChannelData(true);
@@ -178,11 +203,25 @@ public class StaticMembershipInterceptor
data.setMessage(new XByteBuffer(MEMBER_START, false));
try {
super.sendMessage(members, data, null);
- }catch (ChannelException cx) {
+ } catch (ChannelException cx) {
log.warn(sm.getString("staticMembershipInterceptor.sendLocalMember.failed"),cx);
}
}
+ protected void sendShutdown(Member[] members) {
+ if ( members == null || members.length == 0 ) return;
+ ChannelData data = new ChannelData(true);
+ data.setAddress(getLocalMember(false));
+ data.setTimestamp(System.currentTimeMillis());
+ data.setOptions(getOptionFlag());
+ data.setMessage(new XByteBuffer(MEMBER_STOP, false));
+ try {
+ super.sendMessage(members, data, null);
+ } catch (ChannelException cx) {
+
log.warn(sm.getString("staticMembershipInterceptor.sendShutdown.failed"),cx);
+ }
+ }
+
protected ChannelInterceptor getfirstInterceptor() {
ChannelInterceptor result = null;
ChannelInterceptor now = this;
Modified: tomcat/trunk/webapps/docs/changelog.xml
URL:
http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1721085&r1=1721084&r2=1721085&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/trunk/webapps/docs/changelog.xml Mon Dec 21 04:38:40 2015
@@ -283,6 +283,10 @@
Ignore the unnecessary member remove operation from different domain.
(kfujino)
</fix>
+ <fix>
+ Add support for the shutdown notification of local members in the
static
+ cluster. (kfujino)
+ </fix>
</changelog>
</subsection>
<subsection name="jdbc-pool">
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]