You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@polaris.apache.org by di...@apache.org on 2026/10/30 18:25:54 UTC

(polaris) branch main updated: Split resolv.conf search domains on any whitespace in the distributed cache resolver (#5932)

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

dimas-b pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/polaris.git


The following commit(s) were added to refs/heads/main by this push:
     new 3d36ca421b Split resolv.conf search domains on any whitespace in the distributed cache resolver (#5932)
3d36ca421b is described below

commit 3d36ca421ba306f1194866f979a62307009babff
Author: Peter Rozsa <ro...@gmail.com>
AuthorDate: Fri Oct 30 19:25:48 2026 +0100

    Split resolv.conf search domains on any whitespace in the distributed cache resolver (#5932)
    
    ResolvConf split the "search" line on a single space character. Lines
    using several spaces or tabs between domains, which resolv.conf permits,
    produced empty or tab-joined entries that AddressResolver then used as
    DNS search suffixes. Domains are now split on runs of whitespace and an
    empty "search" line is ignored.
    
    Assisted-By: Claude Fable 5.1 <no...@anthropic.com>
---
 .../polaris/persistence/nosql/quarkus/distcache/ResolvConf.java   | 6 +++++-
 .../persistence/nosql/quarkus/distcache/TestResolvConf.java       | 8 ++++++++
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/persistence/nosql/persistence/cdi/quarkus-distcache/src/main/java/org/apache/polaris/persistence/nosql/quarkus/distcache/ResolvConf.java b/persistence/nosql/persistence/cdi/quarkus-distcache/src/main/java/org/apache/polaris/persistence/nosql/quarkus/distcache/ResolvConf.java
index 6900097199..3b38f26658 100644
--- a/persistence/nosql/persistence/cdi/quarkus-distcache/src/main/java/org/apache/polaris/persistence/nosql/quarkus/distcache/ResolvConf.java
+++ b/persistence/nosql/persistence/cdi/quarkus-distcache/src/main/java/org/apache/polaris/persistence/nosql/quarkus/distcache/ResolvConf.java
@@ -96,7 +96,11 @@ final class ResolvConf {
       }
       if (ln.startsWith("search")) {
         ln = ln.substring("search".length()).trim();
-        searchList.addAll(Arrays.asList(ln.split(" ")));
+        if (ln.isEmpty()) {
+          continue;
+        }
+        // resolv.conf allows search domains to be separated by any amount of spaces or tabs
+        searchList.addAll(Arrays.asList(ln.split("\\s+")));
       }
     }
     this.nameservers = unmodifiableList(nameservers);
diff --git a/persistence/nosql/persistence/cdi/quarkus-distcache/src/test/java/org/apache/polaris/persistence/nosql/quarkus/distcache/TestResolvConf.java b/persistence/nosql/persistence/cdi/quarkus-distcache/src/test/java/org/apache/polaris/persistence/nosql/quarkus/distcache/TestResolvConf.java
index 38a9555a66..f2e74bc791 100644
--- a/persistence/nosql/persistence/cdi/quarkus-distcache/src/test/java/org/apache/polaris/persistence/nosql/quarkus/distcache/TestResolvConf.java
+++ b/persistence/nosql/persistence/cdi/quarkus-distcache/src/test/java/org/apache/polaris/persistence/nosql/quarkus/distcache/TestResolvConf.java
@@ -103,6 +103,14 @@ public class TestResolvConf {
             """,
             List.of(new InetSocketAddress("127.0.0.1", 53), new InetSocketAddress("1.2.3.4", 53)),
             List.of("search.domain", "anothersearch.anotherdomain")),
+        arguments(
+            "nameserver 127.0.0.1\nsearch search.domain  \t another.domain\tthird.domain\n",
+            List.of(new InetSocketAddress("127.0.0.1", 53)),
+            List.of("search.domain", "another.domain", "third.domain")),
+        arguments(
+            "nameserver 127.0.0.1\nsearch\n",
+            List.of(new InetSocketAddress("127.0.0.1", 53)),
+            List.of()),
         arguments("", List.of(), List.of()));
   }
 }