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

jackietien pushed a commit to branch new_object_type
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit 4ede61cdf0769427cc7a1571e6450a041326a2dc
Author: shuwenwei <[email protected]>
AuthorDate: Thu Oct 30 20:19:47 2025 +0800

    Avoid throwing AuthException to the state machine (#16677)
    
    (cherry picked from commit f8ad340df554c200d593257eeb53f3f930eb97b7)
---
 .../confignode/persistence/auth/AuthorInfo.java    | 83 +++++++++++++++++-----
 .../persistence/auth/AuthorPlanExecutor.java       |  7 +-
 2 files changed, 70 insertions(+), 20 deletions(-)

diff --git 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/auth/AuthorInfo.java
 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/auth/AuthorInfo.java
index 06c564fd5ac..06bcd81b7fa 100644
--- 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/auth/AuthorInfo.java
+++ 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/auth/AuthorInfo.java
@@ -150,34 +150,74 @@ public class AuthorInfo implements SnapshotProcessor {
     return authorPlanExecutor.executeRelationalAuthorNonQuery(authorPlan);
   }
 
-  public PermissionInfoResp executeListUsers(final AuthorPlan plan) throws 
AuthException {
-    return authorPlanExecutor.executeListUsers(plan);
+  public PermissionInfoResp executeListUsers(final AuthorPlan plan) {
+    try {
+      return authorPlanExecutor.executeListUsers(plan);
+    } catch (AuthException e) {
+      PermissionInfoResp resp = new PermissionInfoResp();
+      resp.setStatus(new 
TSStatus(e.getCode().getStatusCode()).setMessage(e.getMessage()));
+      return resp;
+    }
   }
 
-  public PermissionInfoResp executeListRoles(final AuthorPlan plan) throws 
AuthException {
-    return authorPlanExecutor.executeListRoles(plan);
+  public PermissionInfoResp executeListRoles(final AuthorPlan plan) {
+    try {
+      return authorPlanExecutor.executeListRoles(plan);
+    } catch (AuthException e) {
+      PermissionInfoResp resp = new PermissionInfoResp();
+      resp.setStatus(new 
TSStatus(e.getCode().getStatusCode()).setMessage(e.getMessage()));
+      return resp;
+    }
   }
 
-  public PermissionInfoResp executeListRolePrivileges(final AuthorPlan plan) 
throws AuthException {
-    return authorPlanExecutor.executeListRolePrivileges(plan);
+  public PermissionInfoResp executeListRolePrivileges(final AuthorPlan plan) {
+    try {
+      return authorPlanExecutor.executeListRolePrivileges(plan);
+    } catch (AuthException e) {
+      PermissionInfoResp resp = new PermissionInfoResp();
+      resp.setStatus(new 
TSStatus(e.getCode().getStatusCode()).setMessage(e.getMessage()));
+      return resp;
+    }
   }
 
-  public PermissionInfoResp executeListUserPrivileges(final AuthorPlan plan) 
throws AuthException {
-    return authorPlanExecutor.executeListUserPrivileges(plan);
+  public PermissionInfoResp executeListUserPrivileges(final AuthorPlan plan) {
+    try {
+      return authorPlanExecutor.executeListUserPrivileges(plan);
+    } catch (AuthException e) {
+      PermissionInfoResp resp = new PermissionInfoResp();
+      resp.setStatus(new 
TSStatus(e.getCode().getStatusCode()).setMessage(e.getMessage()));
+      return resp;
+    }
   }
 
-  public TAuthizedPatternTreeResp generateAuthorizedPTree(String username, int 
permission)
-      throws AuthException {
-    return authorPlanExecutor.generateAuthorizedPTree(username, permission);
+  public TAuthizedPatternTreeResp generateAuthorizedPTree(String username, int 
permission) {
+    try {
+      return authorPlanExecutor.generateAuthorizedPTree(username, permission);
+    } catch (AuthException e) {
+      TAuthizedPatternTreeResp resp = new TAuthizedPatternTreeResp();
+      resp.setStatus(new 
TSStatus(e.getCode().getStatusCode()).setMessage(e.getMessage()));
+      return resp;
+    }
   }
 
-  public TPermissionInfoResp checkRoleOfUser(String username, String roleName)
-      throws AuthException {
-    return authorPlanExecutor.checkRoleOfUser(username, roleName);
+  public TPermissionInfoResp checkRoleOfUser(String username, String roleName) 
{
+    try {
+      return authorPlanExecutor.checkRoleOfUser(username, roleName);
+    } catch (AuthException e) {
+      TPermissionInfoResp resp = new TPermissionInfoResp();
+      resp.setStatus(new 
TSStatus(e.getCode().getStatusCode()).setMessage(e.getMessage()));
+      return resp;
+    }
   }
 
-  public TPermissionInfoResp getUser(String username) throws AuthException {
-    return authorPlanExecutor.getUser(username);
+  public TPermissionInfoResp getUser(String username) {
+    try {
+      return authorPlanExecutor.getUser(username);
+    } catch (AuthException e) {
+      TPermissionInfoResp resp = new TPermissionInfoResp();
+      resp.setStatus(new 
TSStatus(e.getCode().getStatusCode()).setMessage(e.getMessage()));
+      return resp;
+    }
   }
 
   public String getUserName(long userId) throws AuthException {
@@ -199,9 +239,14 @@ public class AuthorInfo implements SnapshotProcessor {
    *
    * @param username The username of the user that needs to be cached
    */
-  public TPermissionInfoResp getUserPermissionInfo(String username, ModelType 
type)
-      throws AuthException {
-    return authorPlanExecutor.getUserPermissionInfo(username, type);
+  public TPermissionInfoResp getUserPermissionInfo(String username, ModelType 
type) {
+    try {
+      return authorPlanExecutor.getUserPermissionInfo(username, type);
+    } catch (AuthException e) {
+      TPermissionInfoResp resp = new TPermissionInfoResp();
+      resp.setStatus(new 
TSStatus(e.getCode().getStatusCode()).setMessage(e.getMessage()));
+      return resp;
+    }
   }
 
   public TSStatus enableSeparationOfAdminPowers(
diff --git 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/auth/AuthorPlanExecutor.java
 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/auth/AuthorPlanExecutor.java
index 1056ad735cf..9430cc06f02 100644
--- 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/auth/AuthorPlanExecutor.java
+++ 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/auth/AuthorPlanExecutor.java
@@ -715,6 +715,11 @@ public class AuthorPlanExecutor implements 
IAuthorPlanExecutor {
 
   @Override
   public String getUserName(long userId) throws AuthException {
-    return authorizer.getUser(userId).getName();
+    User user = authorizer.getUser(userId);
+    if (user == null) {
+      throw new AuthException(
+          TSStatusCode.USER_NOT_EXIST, String.format("No such user id: " + 
userId));
+    }
+    return user.getName();
   }
 }

Reply via email to