You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by yo...@apache.org on 2025/09/22 10:43:29 UTC

(iotdb) 01/01: seems finish

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

yongzao pushed a commit to branch add-userid-in-client
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit e67d778799900b80f925e195fda4ac06aa762b6d
Author: Yongzao <53...@qq.com>
AuthorDate: Mon Sep 22 18:43:17 2025 +0800

    seems finish
---
 .../db/protocol/client/DataNodeInternalClient.java |  6 +++++-
 .../protocol/rest/filter/AuthorizationFilter.java  |  1 +
 .../apache/iotdb/db/protocol/rest/filter/User.java |  6 ++++++
 .../iotdb/db/protocol/session/IClientSession.java  | 10 ++++++++++
 .../iotdb/db/protocol/session/SessionManager.java  | 22 +++++++++-------------
 .../impl/DataNodeInternalRPCServiceImpl.java       |  7 ++++++-
 6 files changed, 37 insertions(+), 15 deletions(-)

diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/client/DataNodeInternalClient.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/client/DataNodeInternalClient.java
index 0440fbd9f26..d96151b2e93 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/client/DataNodeInternalClient.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/client/DataNodeInternalClient.java
@@ -81,7 +81,11 @@ public class DataNodeInternalClient {
       session.setSqlDialect(sessionInfo.getSqlDialect());
 
       SESSION_MANAGER.supplySession(
-          session, sessionInfo.getUserName(), sessionInfo.getZoneId(), ClientVersion.V_1_0);
+          session,
+          sessionInfo.getUserId(),
+          sessionInfo.getUserName(),
+          sessionInfo.getZoneId(),
+          ClientVersion.V_1_0);
 
       LOGGER.info("User: {}, opens internal Session-{}.", sessionInfo.getUserName(), session);
     } catch (Exception e) {
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/filter/AuthorizationFilter.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/filter/AuthorizationFilter.java
index 53c825cb69c..c1bdf32f192 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/filter/AuthorizationFilter.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/filter/AuthorizationFilter.java
@@ -101,6 +101,7 @@ public class AuthorizationFilter implements ContainerRequestFilter, ContainerRes
       SESSION_MANAGER.registerSession(restClientSession);
       SESSION_MANAGER.supplySession(
           SESSION_MANAGER.getCurrSession(),
+          user.getUserId(),
           user.getUsername(),
           ZoneId.systemDefault(),
           IoTDBConstant.ClientVersion.V_1_0);
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/filter/User.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/filter/User.java
index 0bb0dd4c522..36392f57234 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/filter/User.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/filter/User.java
@@ -18,9 +18,15 @@
 package org.apache.iotdb.db.protocol.rest.filter;
 
 public class User {
+  // TODO: unify with the real User and UserCache
+  private long userId = -1;
   private String username;
   private String password;
 
+  public long getUserId() {
+    return userId;
+  }
+
   public String getPassword() {
     return password;
   }
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/session/IClientSession.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/session/IClientSession.java
index 0a12fbe8206..21d4121ffd3 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/session/IClientSession.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/session/IClientSession.java
@@ -44,6 +44,8 @@ public abstract class IClientSession {
 
   private TimeZone timeZone;
 
+  private long userId;
+
   private String username;
 
   private boolean login = false;
@@ -89,6 +91,14 @@ public abstract class IClientSession {
     this.zoneId = timeZone.toZoneId();
   }
 
+  public long getUserId() {
+    return userId;
+  }
+
+  public void setUserId(long userId) {
+    this.userId = userId;
+  }
+
   public String getUsername() {
     return this.username;
   }
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/session/SessionManager.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/session/SessionManager.java
index 0f69c8c0711..f67b764a04f 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/session/SessionManager.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/session/SessionManager.java
@@ -264,8 +264,10 @@ public class SessionManager implements SessionManagerMBean {
             .setCode(TSStatusCode.INCOMPATIBLE_VERSION.getStatusCode())
             .setMessage("The version is incompatible, please upgrade to " + IoTDBConstant.VERSION);
       } else {
+        User user = authorityFetcher.get().getUser(session.getUsername());
+        long userId = user == null ? -1 : user.getUserId();
         session.setSqlDialect(sqlDialect);
-        supplySession(session, username, ZoneId.of(zoneId), clientVersion);
+        supplySession(session, userId, username, ZoneId.of(zoneId), clientVersion);
         String logInMessage = "Login successfully";
         if (timeToExpire != null && timeToExpire != Long.MAX_VALUE) {
           DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
@@ -534,10 +536,12 @@ public class SessionManager implements SessionManagerMBean {
   /** must be called after registerSession()) will mark the session login. */
   public void supplySession(
       IClientSession session,
+      long userId,
       String username,
       ZoneId zoneId,
       IoTDBConstant.ClientVersion clientVersion) {
     session.setId(sessionIdGenerator.incrementAndGet());
+    session.setUserId(userId);
     session.setUsername(username);
     session.setZoneId(zoneId);
     session.setClientVersion(clientVersion);
@@ -556,11 +560,9 @@ public class SessionManager implements SessionManagerMBean {
   }
 
   public SessionInfo getSessionInfo(IClientSession session) {
-    User user = authorityFetcher.get().getUser(session.getUsername());
-    long userId = user == null ? -1 : user.getUserId();
     return new SessionInfo(
         session.getId(),
-        new UserEntity(userId, session.getUsername(), session.getClientAddress()),
+        new UserEntity(session.getUserId(), session.getUsername(), session.getClientAddress()),
         session.getZoneId(),
         session.getClientVersion(),
         session.getDatabaseName(),
@@ -580,11 +582,9 @@ public class SessionManager implements SessionManagerMBean {
   }
 
   public SessionInfo getSessionInfoOfTreeModel(IClientSession session) {
-    User user = authorityFetcher.get().getUser(session.getUsername());
-    long userId = user == null ? -1 : user.getUserId();
     return new SessionInfo(
         session.getId(),
-        new UserEntity(userId, session.getUsername(), session.getClientAddress()),
+        new UserEntity(session.getUserId(), session.getUsername(), session.getClientAddress()),
         ZoneId.systemDefault(),
         session.getClientVersion(),
         session.getDatabaseName(),
@@ -592,11 +592,9 @@ public class SessionManager implements SessionManagerMBean {
   }
 
   public SessionInfo getSessionInfoOfTableModel(IClientSession session) {
-    User user = authorityFetcher.get().getUser(session.getUsername());
-    long userId = user == null ? -1 : user.getUserId();
     return new SessionInfo(
         session.getId(),
-        new UserEntity(userId, session.getUsername(), session.getClientAddress()),
+        new UserEntity(session.getUserId(), session.getUsername(), session.getClientAddress()),
         ZoneId.systemDefault(),
         session.getClientVersion(),
         session.getDatabaseName(),
@@ -604,11 +602,9 @@ public class SessionManager implements SessionManagerMBean {
   }
 
   public SessionInfo getSessionInfoOfPipeReceiver(IClientSession session, String databaseName) {
-    User user = authorityFetcher.get().getUser(session.getUsername());
-    long userId = user == null ? -1 : user.getUserId();
     return new SessionInfo(
         session.getId(),
-        new UserEntity(userId, session.getUsername(), session.getClientAddress()),
+        new UserEntity(session.getUserId(), session.getUsername(), session.getClientAddress()),
         ZoneId.systemDefault(),
         session.getClientVersion(),
         databaseName,
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/thrift/impl/DataNodeInternalRPCServiceImpl.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/thrift/impl/DataNodeInternalRPCServiceImpl.java
index 063cc37057c..b5b6d919d5e 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/thrift/impl/DataNodeInternalRPCServiceImpl.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/thrift/impl/DataNodeInternalRPCServiceImpl.java
@@ -1562,7 +1562,12 @@ public class DataNodeInternalRPCServiceImpl implements IDataNodeRPCService.Iface
     SESSION_MANAGER.registerSession(session);
 
     SESSION_MANAGER.supplySession(
-        session, req.getUsername(), ZoneId.of(req.getZoneId()), ClientVersion.V_1_0);
+        session,
+        // TODO: User the real userId
+        -1,
+        req.getUsername(),
+        ZoneId.of(req.getZoneId()),
+        ClientVersion.V_1_0);
 
     String executedSQL = req.queryBody;