This is an automated email from the ASF dual-hosted git repository.

remm pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tomcat.git


The following commit(s) were added to refs/heads/main by this push:
     new d47f14750c Support raw IPv6 for the service host
d47f14750c is described below

commit d47f14750c4188f9f91042beeea8f40da49f1e5a
Author: remm <[email protected]>
AuthorDate: Fri Mar 6 19:24:46 2026 +0100

    Support raw IPv6 for the service host
    
    BZ69970
---
 .../tribes/membership/cloud/KubernetesMembershipProvider.java  | 10 +++++++++-
 webapps/docs/changelog.xml                                     |  4 ++++
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git 
a/java/org/apache/catalina/tribes/membership/cloud/KubernetesMembershipProvider.java
 
b/java/org/apache/catalina/tribes/membership/cloud/KubernetesMembershipProvider.java
index c8fac1d531..1af899d8d2 100644
--- 
a/java/org/apache/catalina/tribes/membership/cloud/KubernetesMembershipProvider.java
+++ 
b/java/org/apache/catalina/tribes/membership/cloud/KubernetesMembershipProvider.java
@@ -46,6 +46,9 @@ import org.apache.tomcat.util.json.JSONParser;
 
 public class KubernetesMembershipProvider extends CloudMembershipProvider {
 
+    private static final String IPV6_URL = 
"%s://[%s]:%s/api/%s/namespaces/%s/pods";
+    private static final String URL = "%s://%s:%s/api/%s/namespaces/%s/pods";
+
     private static final Log log = 
LogFactory.getLog(KubernetesMembershipProvider.class);
 
     private Path saTokenPath;
@@ -122,7 +125,12 @@ public class KubernetesMembershipProvider extends 
CloudMembershipProvider {
         namespace = URLEncoder.encode(namespace, StandardCharsets.UTF_8);
         labels = labels == null ? null : URLEncoder.encode(labels, 
StandardCharsets.UTF_8);
 
-        url = String.format("%s://%s:%s/api/%s/namespaces/%s/pods", protocol, 
masterHost, masterPort, ver, namespace);
+        String urlFormat = URL;
+        if (masterHost != null && masterHost.indexOf(':') != -1) {
+            // [] must be used around raw IPv6
+            urlFormat = IPV6_URL;
+        }
+        url = String.format(urlFormat, protocol, masterHost, masterPort, ver, 
namespace);
         if (labels != null && !labels.isEmpty()) {
             url = url + "?labelSelector=" + labels;
         }
diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml
index c905cdcb7d..279d2d82f5 100644
--- a/webapps/docs/changelog.xml
+++ b/webapps/docs/changelog.xml
@@ -333,6 +333,10 @@
   <subsection name="Cluster">
     <changelog>
       <!-- Entries for backport and removal before 12.0.0-M1 below this line 
-->
+      <fix>
+        <bug>69970</bug>: Support raw IPv6 in Kubernetes membership provider
+        for the service host. (remm)
+      </fix>
     </changelog>
   </subsection>
   <subsection name="WebSocket">


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to