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

yuqi1129 pushed a commit to branch branch-1.3
in repository https://gitbox.apache.org/repos/asf/gravitino.git


The following commit(s) were added to refs/heads/branch-1.3 by this push:
     new 2a3b473ded [Cherry-pick to branch-1.3] [#11360] fix(server): Ignore 
quote-only custom filter entries (#11361) (#11427)
2a3b473ded is described below

commit 2a3b473dedb7e79c2c2f595dd8b8aa998c17e361
Author: github-actions[bot] 
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Fri Jun 5 09:21:10 2026 +0800

    [Cherry-pick to branch-1.3] [#11360] fix(server): Ignore quote-only custom 
filter entries (#11361) (#11427)
    
    **Cherry-pick Information:**
    - Original commit: 44d01f47b605b6328b092b405509929d598cc010
    - Target branch: `branch-1.3`
    - Status: ✅ Clean cherry-pick (no conflicts)
    
    Co-authored-by: Xu Bai <[email protected]>
---
 .../gravitino/server/web/JettyServerConfig.java    | 17 ++++++++-----
 .../server/web/TestJettyServerConfig.java          | 29 +++++++++++++++++++---
 2 files changed, 37 insertions(+), 9 deletions(-)

diff --git 
a/server-common/src/main/java/org/apache/gravitino/server/web/JettyServerConfig.java
 
b/server-common/src/main/java/org/apache/gravitino/server/web/JettyServerConfig.java
index ec77fa9548..cb7a5b27e6 100644
--- 
a/server-common/src/main/java/org/apache/gravitino/server/web/JettyServerConfig.java
+++ 
b/server-common/src/main/java/org/apache/gravitino/server/web/JettyServerConfig.java
@@ -25,9 +25,12 @@ import java.security.KeyManagementException;
 import java.security.NoSuchAlgorithmException;
 import java.util.Collections;
 import java.util.HashMap;
+import java.util.LinkedHashSet;
+import java.util.List;
 import java.util.Map;
 import java.util.Optional;
 import java.util.Set;
+import java.util.stream.Collectors;
 import javax.net.ssl.SSLContext;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.gravitino.Config;
@@ -207,12 +210,13 @@ public final class JettyServerConfig {
           .stringConf()
           .createWithDefault("JKS");
 
-  public static final ConfigEntry<Optional<String>> CUSTOM_FILTERS =
+  public static final ConfigEntry<List<String>> CUSTOM_FILTERS =
       new ConfigBuilder("customFilters")
           .doc("Comma separated list of filter class names to apply to the 
APIs")
           .version(ConfigConstants.VERSION_0_4_0)
           .stringConf()
-          .createWithOptional();
+          .toSequence()
+          .createWithDefault(Collections.emptyList());
   public static final ConfigEntry<Boolean> ENABLE_CORS_FILTER =
       new ConfigBuilder("enableCorsFilter")
           .doc("Enable cross origin resource share filter")
@@ -375,10 +379,11 @@ public final class JettyServerConfig {
     this.enableClientAuth = internalConfig.get(ENABLE_CLIENT_AUTH);
 
     this.customFilters =
-        internalConfig
-            .get(CUSTOM_FILTERS)
-            .map(filters -> 
Collections.unmodifiableSet(Sets.newHashSet(filters.split(SPLITTER))))
-            .orElse(Collections.emptySet());
+        Collections.unmodifiableSet(
+            internalConfig.get(CUSTOM_FILTERS).stream()
+                .filter(filter -> !filter.equals("\"\""))
+                .filter(filter -> !filter.equals("''"))
+                .collect(Collectors.toCollection(() -> new 
LinkedHashSet<>())));
 
     this.keyStoreType = internalConfig.get(SSL_KEYSTORE_TYPE);
     this.trustStoreType = internalConfig.get(SSL_TRUST_STORE_TYPE);
diff --git 
a/server-common/src/test/java/org/apache/gravitino/server/web/TestJettyServerConfig.java
 
b/server-common/src/test/java/org/apache/gravitino/server/web/TestJettyServerConfig.java
index 992f9f716c..616d932191 100644
--- 
a/server-common/src/test/java/org/apache/gravitino/server/web/TestJettyServerConfig.java
+++ 
b/server-common/src/test/java/org/apache/gravitino/server/web/TestJettyServerConfig.java
@@ -19,7 +19,9 @@
 package org.apache.gravitino.server.web;
 
 import com.google.common.collect.Sets;
+import java.util.Arrays;
 import java.util.Collections;
+import java.util.List;
 import java.util.Optional;
 import java.util.Set;
 import org.apache.gravitino.Config;
@@ -62,12 +64,33 @@ public class TestJettyServerConfig {
 
   @Test
   public void testCustomFilters() {
-    Config emptyconfig = new Config() {};
-    JettyServerConfig jettyServerConfig = 
JettyServerConfig.fromConfig(emptyconfig, "");
+    Config emptyConfig = new Config() {};
+    JettyServerConfig jettyServerConfig = 
JettyServerConfig.fromConfig(emptyConfig, "");
+    Assertions.assertNotNull(jettyServerConfig.getCustomFilters());
     Assertions.assertTrue(jettyServerConfig.getCustomFilters().isEmpty());
 
+    Config quotedEmptyConfig = new Config() {};
+    quotedEmptyConfig.set(JettyServerConfig.CUSTOM_FILTERS, List.of("\"\""));
+    jettyServerConfig = JettyServerConfig.fromConfig(quotedEmptyConfig, "");
+    Assertions.assertNotNull(jettyServerConfig.getCustomFilters());
+    Assertions.assertTrue(jettyServerConfig.getCustomFilters().isEmpty());
+
+    Config singleQuotedEmptyConfig = new Config() {};
+    singleQuotedEmptyConfig.set(JettyServerConfig.CUSTOM_FILTERS, 
List.of("''"));
+    jettyServerConfig = JettyServerConfig.fromConfig(singleQuotedEmptyConfig, 
"");
+    Assertions.assertNotNull(jettyServerConfig.getCustomFilters());
+    Assertions.assertTrue(jettyServerConfig.getCustomFilters().isEmpty());
+
+    Config mixedEmptyConfig = new Config() {};
+    mixedEmptyConfig.set(
+        JettyServerConfig.CUSTOM_FILTERS,
+        Arrays.asList(" 1", " ", "", " \"\" ", " '' ", "", " 2 "));
+    jettyServerConfig = JettyServerConfig.fromConfig(mixedEmptyConfig, "");
+    Assertions.assertIterableEquals(
+        Sets.newHashSet("1", "2"), jettyServerConfig.getCustomFilters());
+
     Config somethingConfig = new Config() {};
-    somethingConfig.set(JettyServerConfig.CUSTOM_FILTERS, Optional.of("1,2"));
+    somethingConfig.set(JettyServerConfig.CUSTOM_FILTERS, List.of("1,2"));
     somethingConfig.set(new ConfigBuilder("1.1").stringConf(), "test");
     somethingConfig.set(new ConfigBuilder("1.2").stringConf(), "test");
     jettyServerConfig = JettyServerConfig.fromConfig(somethingConfig, "");

Reply via email to