This is an automated email from the ASF dual-hosted git repository.
lzljs3620320 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/paimon.git
The following commit(s) were added to refs/heads/master by this push:
new 9f4c57b0bc [rest] use baseHeaders instead of emptyMap in RESTApi
GetConfig (#6410)
9f4c57b0bc is described below
commit 9f4c57b0bc0b3f8716df875e9126b71f2658cbd8
Author: Jiajia Li <[email protected]>
AuthorDate: Fri Oct 17 04:09:28 2025 +0800
[rest] use baseHeaders instead of emptyMap in RESTApi GetConfig (#6410)
---
.../main/java/org/apache/paimon/rest/RESTApi.java | 4 +--
.../apache/paimon/rest/MockRESTCatalogTest.java | 42 ++++++++++++++++++++++
.../org/apache/paimon/rest/RESTCatalogServer.java | 11 ++++++
3 files changed, 54 insertions(+), 3 deletions(-)
diff --git a/paimon-api/src/main/java/org/apache/paimon/rest/RESTApi.java
b/paimon-api/src/main/java/org/apache/paimon/rest/RESTApi.java
index 0a9989bdd5..defcd8d3f3 100644
--- a/paimon-api/src/main/java/org/apache/paimon/rest/RESTApi.java
+++ b/paimon-api/src/main/java/org/apache/paimon/rest/RESTApi.java
@@ -92,7 +92,6 @@ import
org.apache.paimon.shade.jackson2.com.fasterxml.jackson.databind.ObjectMap
import javax.annotation.Nullable;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Objects;
@@ -192,8 +191,7 @@ public class RESTApi {
ResourcePaths.config(),
queryParams,
ConfigResponse.class,
- new RESTAuthFunction(
- Collections.emptyMap(),
authProvider))
+ new RESTAuthFunction(baseHeaders,
authProvider))
.merge(options.toMap()));
baseHeaders.putAll(extractPrefixMap(options, HEADER_PREFIX));
}
diff --git
a/paimon-core/src/test/java/org/apache/paimon/rest/MockRESTCatalogTest.java
b/paimon-core/src/test/java/org/apache/paimon/rest/MockRESTCatalogTest.java
index bf56514b4f..b0e2415096 100644
--- a/paimon-core/src/test/java/org/apache/paimon/rest/MockRESTCatalogTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/rest/MockRESTCatalogTest.java
@@ -170,6 +170,48 @@ class MockRESTCatalogTest extends RESTCatalogTest {
assertEquals(headers2.get("User-Agent"), "test");
}
+ @Test
+ void testBaseHeadersInRequests() throws Exception {
+ // Set custom headers in options
+ String customHeaderName = "custom-header";
+ String customHeaderValue = "custom-value";
+ options.set(HEADER_PREFIX + customHeaderName, customHeaderValue);
+
+ // Clear any previous headers
+ restCatalogServer.clearReceivedHeaders();
+ assertEquals(0, restCatalogServer.getReceivedHeaders().size());
+
+ // Initialize catalog with custom headers
+ RESTCatalog restCatalog = initCatalog(false);
+ // init catalog will trigger REST GetConfig request
+ checkHeader(customHeaderName, customHeaderValue);
+
+ // Clear any previous headers
+ restCatalogServer.clearReceivedHeaders();
+ assertEquals(0, restCatalogServer.getReceivedHeaders().size());
+
+ // Perform an operation that will trigger REST request
+ restCatalog.listDatabases();
+ checkHeader(customHeaderName, customHeaderValue);
+ }
+
+ private void checkHeader(String headerName, String headerValue) {
+ // Verify that the header were included in the requests
+ List<Map<String, String>> receivedHeaders =
restCatalogServer.getReceivedHeaders();
+ assert receivedHeaders.size() > 0 : "No requests were recorded";
+
+ // Check that request contains our custom headers
+ boolean foundCustomHeader = false;
+
+ for (Map<String, String> headers : receivedHeaders) {
+ if (headerValue.equals(headers.get(headerName))) {
+ foundCustomHeader = true;
+ }
+ }
+
+ assert foundCustomHeader : "Header was not found in any request";
+ }
+
private void testDlfAuth(RESTCatalog restCatalog) throws Exception {
String databaseName = "db1";
restCatalog.createDatabase(databaseName, true);
diff --git
a/paimon-core/src/test/java/org/apache/paimon/rest/RESTCatalogServer.java
b/paimon-core/src/test/java/org/apache/paimon/rest/RESTCatalogServer.java
index c4b996436d..6ce589472a 100644
--- a/paimon-core/src/test/java/org/apache/paimon/rest/RESTCatalogServer.java
+++ b/paimon-core/src/test/java/org/apache/paimon/rest/RESTCatalogServer.java
@@ -180,6 +180,8 @@ public class RESTCatalogServer {
private final ResourcePaths resourcePaths;
+ private final List<Map<String, String>> receivedHeaders = new
ArrayList<>();
+
public RESTCatalogServer(
String dataPath, AuthProvider authProvider, ConfigResponse config,
String warehouse) {
this.warehouse = warehouse;
@@ -275,6 +277,7 @@ public class RESTCatalogServer {
RESTResponse response;
try {
Map<String, String> headers = getHeader(request);
+ receivedHeaders.add(new HashMap<>(headers));
String[] paths = request.getPath().split("\\?");
String resourcePath = paths[0];
Map<String, String> parameters =
@@ -2375,4 +2378,12 @@ public class RESTCatalogServer {
400),
400);
}
+
+ public List<Map<String, String>> getReceivedHeaders() {
+ return receivedHeaders;
+ }
+
+ public void clearReceivedHeaders() {
+ receivedHeaders.clear();
+ }
}