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

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


The following commit(s) were added to refs/heads/main by this push:
     new bcf8b6452 [server] Register ConfigException in Errors to fix 
misleading UnknownServerException from alterClusterConfigs (#2857)
bcf8b6452 is described below

commit bcf8b6452099292db91a4cd755f00a3e4172ed66
Author: Liebing <[email protected]>
AuthorDate: Mon Mar 16 09:50:02 2026 +0800

    [server] Register ConfigException in Errors to fix misleading 
UnknownServerException from alterClusterConfigs (#2857)
---
 .../org/apache/fluss/client/admin/FlussAdminITCase.java   | 15 +++++++++++++++
 .../main/java/org/apache/fluss/rpc/protocol/Errors.java   |  4 +++-
 .../fluss/server/coordinator/CoordinatorService.java      |  6 +++++-
 3 files changed, 23 insertions(+), 2 deletions(-)

diff --git 
a/fluss-client/src/test/java/org/apache/fluss/client/admin/FlussAdminITCase.java
 
b/fluss-client/src/test/java/org/apache/fluss/client/admin/FlussAdminITCase.java
index 2ae715fe0..a923679dc 100644
--- 
a/fluss-client/src/test/java/org/apache/fluss/client/admin/FlussAdminITCase.java
+++ 
b/fluss-client/src/test/java/org/apache/fluss/client/admin/FlussAdminITCase.java
@@ -32,6 +32,7 @@ import org.apache.fluss.config.Configuration;
 import org.apache.fluss.config.cluster.AlterConfig;
 import org.apache.fluss.config.cluster.AlterConfigOpType;
 import org.apache.fluss.config.cluster.ConfigEntry;
+import org.apache.fluss.exception.ConfigException;
 import org.apache.fluss.exception.DatabaseAlreadyExistException;
 import org.apache.fluss.exception.DatabaseNotEmptyException;
 import org.apache.fluss.exception.DatabaseNotExistException;
@@ -1366,6 +1367,20 @@ class FlussAdminITCase extends ClientToServerITCaseBase {
                 },
                 Duration.ofMinutes(1),
                 "Get lakehouse info");
+
+        // Test alter invalid config
+        assertThatThrownBy(
+                        () ->
+                                admin.alterClusterConfigs(
+                                                Collections.singletonList(
+                                                        new AlterConfig(
+                                                                
"not.exist.key",
+                                                                "value",
+                                                                
AlterConfigOpType.SET)))
+                                        .get())
+                .cause()
+                .isInstanceOf(ConfigException.class)
+                .hasMessageContaining("not.exist.key");
     }
 
     private void assertConfigEntry(
diff --git a/fluss-rpc/src/main/java/org/apache/fluss/rpc/protocol/Errors.java 
b/fluss-rpc/src/main/java/org/apache/fluss/rpc/protocol/Errors.java
index 36ecd819f..dd16d10e2 100644
--- a/fluss-rpc/src/main/java/org/apache/fluss/rpc/protocol/Errors.java
+++ b/fluss-rpc/src/main/java/org/apache/fluss/rpc/protocol/Errors.java
@@ -20,6 +20,7 @@ package org.apache.fluss.rpc.protocol;
 import org.apache.fluss.exception.ApiException;
 import org.apache.fluss.exception.AuthenticationException;
 import org.apache.fluss.exception.AuthorizationException;
+import org.apache.fluss.exception.ConfigException;
 import org.apache.fluss.exception.CorruptMessageException;
 import org.apache.fluss.exception.CorruptRecordException;
 import org.apache.fluss.exception.DatabaseAlreadyExistException;
@@ -245,7 +246,8 @@ public enum Errors {
     INVALID_PRODUCER_ID_EXCEPTION(
             63,
             "The client has attempted to perform an operation with an invalid 
producer ID.",
-            InvalidProducerIdException::new);
+            InvalidProducerIdException::new),
+    CONFIG_EXCEPTION(64, "A configuration error occurred.", 
ConfigException::new);
 
     private static final Logger LOG = LoggerFactory.getLogger(Errors.class);
 
diff --git 
a/fluss-server/src/main/java/org/apache/fluss/server/coordinator/CoordinatorService.java
 
b/fluss-server/src/main/java/org/apache/fluss/server/coordinator/CoordinatorService.java
index 17b6d934c..7c6040d8c 100644
--- 
a/fluss-server/src/main/java/org/apache/fluss/server/coordinator/CoordinatorService.java
+++ 
b/fluss-server/src/main/java/org/apache/fluss/server/coordinator/CoordinatorService.java
@@ -1040,8 +1040,12 @@ public final class CoordinatorService extends 
RpcServiceBase implements Coordina
                             try {
                                 
dynamicConfigManager.alterConfigs(serverConfigChanges);
                                 future.complete(new 
AlterClusterConfigsResponse());
-                            } catch (Exception e) {
+                            } catch (ApiException e) {
                                 future.completeExceptionally(e);
+                            } catch (Exception e) {
+                                future.completeExceptionally(
+                                        new UnknownServerException(
+                                                "Failed to alter cluster 
configs", e));
                             }
                             return null;
                         });

Reply via email to