This is an automated email from the ASF dual-hosted git repository.
jfclere pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tomcat.git
The following commit(s) were added to refs/heads/master by this push:
new 838287e DNS caching prevents running nodes to discover new pods. The
new pods know about the already ready pods and try to join the cluster
connecting to the running pods, so use accept() to add the new pods.
838287e is described below
commit 838287e7d62d8992949f394e40717f68b75b133b
Author: Jean-Frederic Clere <[email protected]>
AuthorDate: Tue Jan 26 10:23:15 2021 +0100
DNS caching prevents running nodes to discover new pods.
The new pods know about the already ready pods and try to
join the cluster connecting to the running pods, so use accept() to add the
new pods.
---
.../membership/cloud/DNSMembershipProvider.java | 51 +++++++++++++++++++++-
1 file changed, 50 insertions(+), 1 deletion(-)
diff --git
a/java/org/apache/catalina/tribes/membership/cloud/DNSMembershipProvider.java
b/java/org/apache/catalina/tribes/membership/cloud/DNSMembershipProvider.java
index 551aaec..5095b35 100644
---
a/java/org/apache/catalina/tribes/membership/cloud/DNSMembershipProvider.java
+++
b/java/org/apache/catalina/tribes/membership/cloud/DNSMembershipProvider.java
@@ -18,9 +18,11 @@
package org.apache.catalina.tribes.membership.cloud;
import java.io.IOException;
+import java.io.Serializable;
import java.net.InetAddress;
import java.net.URLEncoder;
import java.net.UnknownHostException;
+import java.util.Arrays;
import java.util.ArrayList;
import java.util.List;
@@ -157,4 +159,51 @@ public class DNSMembershipProvider extends
CloudMembershipProvider {
return members.toArray(new Member[0]);
}
-}
\ No newline at end of file
+
+ @Override
+ public boolean accept(Serializable msg, Member sender) {
+ // check is the sender is in the member list.
+ boolean found = false;
+ Member[] members = membership.getMembers();
+ if (members != null) {
+ for (Member member : members) {
+ if (Arrays.equals(sender.getHost(), sender.getHost()) &&
sender.getPort() == member.getPort()) {
+ found = true;
+ break;
+ }
+ }
+ }
+ if (!found) {
+ // add it and it's thread
+ MemberImpl member = new MemberImpl();
+ member.setHost(sender.getHost());
+ member.setPort(sender.getPort());
+ byte[] host = sender.getHost();
+ int i = 0;
+ StringBuilder buf = new StringBuilder();
+ buf.append(host[i++] & 0xff);
+ for (; i<host.length; i++) {
+ buf.append(".").append(host[i] & 0xff);
+ }
+
+ byte[] id = md5.digest(buf.toString().getBytes());
+ member.setUniqueId(id);
+ member.setMemberAliveTime(-1);
+ membership.memberAlive(member);
+ Runnable r = new Runnable() {
+ @Override
+ public void run(){
+ String name = Thread.currentThread().getName();
+ try {
+
Thread.currentThread().setName("CloudMembership-memberAdded");
+ membershipListener.memberAdded(member);
+ } finally {
+ Thread.currentThread().setName(name);
+ }
+ }
+ };
+ executor.execute(r);
+ }
+ return false;
+ }
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]