Skip to content

Commit f431f05

Browse files
authored
Add UserId in IClientSession (apache#16459)
1 parent 7cd568c commit f431f05

File tree

6 files changed

+37
-15
lines changed

6 files changed

+37
-15
lines changed

iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/client/DataNodeInternalClient.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,11 @@ public DataNodeInternalClient(SessionInfo sessionInfo) {
8181
session.setSqlDialect(sessionInfo.getSqlDialect());
8282

8383
SESSION_MANAGER.supplySession(
84-
session, sessionInfo.getUserName(), sessionInfo.getZoneId(), ClientVersion.V_1_0);
84+
session,
85+
sessionInfo.getUserId(),
86+
sessionInfo.getUserName(),
87+
sessionInfo.getZoneId(),
88+
ClientVersion.V_1_0);
8589

8690
LOGGER.info("User: {}, opens internal Session-{}.", sessionInfo.getUserName(), session);
8791
} catch (Exception e) {

iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/filter/AuthorizationFilter.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,7 @@ public void filter(ContainerRequestContext containerRequestContext) throws IOExc
101101
SESSION_MANAGER.registerSession(restClientSession);
102102
SESSION_MANAGER.supplySession(
103103
SESSION_MANAGER.getCurrSession(),
104+
user.getUserId(),
104105
user.getUsername(),
105106
ZoneId.systemDefault(),
106107
IoTDBConstant.ClientVersion.V_1_0);

iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/filter/User.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,15 @@
1818
package org.apache.iotdb.db.protocol.rest.filter;
1919

2020
public class User {
21+
// TODO: unify with the real User and UserCache
22+
private long userId = -1;
2123
private String username;
2224
private String password;
2325

26+
public long getUserId() {
27+
return userId;
28+
}
29+
2430
public String getPassword() {
2531
return password;
2632
}

iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/session/IClientSession.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ public abstract class IClientSession {
4444

4545
private TimeZone timeZone;
4646

47+
private long userId;
48+
4749
private String username;
4850

4951
private boolean login = false;
@@ -89,6 +91,14 @@ public void setTimeZone(TimeZone timeZone) {
8991
this.zoneId = timeZone.toZoneId();
9092
}
9193

94+
public long getUserId() {
95+
return userId;
96+
}
97+
98+
public void setUserId(long userId) {
99+
this.userId = userId;
100+
}
101+
92102
public String getUsername() {
93103
return this.username;
94104
}

iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/session/SessionManager.java

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -264,8 +264,10 @@ public BasicOpenSessionResp login(
264264
.setCode(TSStatusCode.INCOMPATIBLE_VERSION.getStatusCode())
265265
.setMessage("The version is incompatible, please upgrade to " + IoTDBConstant.VERSION);
266266
} else {
267+
User user = authorityFetcher.get().getUser(username);
268+
long userId = user == null ? -1 : user.getUserId();
267269
session.setSqlDialect(sqlDialect);
268-
supplySession(session, username, ZoneId.of(zoneId), clientVersion);
270+
supplySession(session, userId, username, ZoneId.of(zoneId), clientVersion);
269271
String logInMessage = "Login successfully";
270272
if (timeToExpire != null && timeToExpire != Long.MAX_VALUE) {
271273
DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
@@ -534,10 +536,12 @@ public void registerSessionForMqtt(IClientSession session) {
534536
/** must be called after registerSession()) will mark the session login. */
535537
public void supplySession(
536538
IClientSession session,
539+
long userId,
537540
String username,
538541
ZoneId zoneId,
539542
IoTDBConstant.ClientVersion clientVersion) {
540543
session.setId(sessionIdGenerator.incrementAndGet());
544+
session.setUserId(userId);
541545
session.setUsername(username);
542546
session.setZoneId(zoneId);
543547
session.setClientVersion(clientVersion);
@@ -556,11 +560,9 @@ public static SessionManager getInstance() {
556560
}
557561

558562
public SessionInfo getSessionInfo(IClientSession session) {
559-
User user = authorityFetcher.get().getUser(session.getUsername());
560-
long userId = user == null ? -1 : user.getUserId();
561563
return new SessionInfo(
562564
session.getId(),
563-
new UserEntity(userId, session.getUsername(), session.getClientAddress()),
565+
new UserEntity(session.getUserId(), session.getUsername(), session.getClientAddress()),
564566
session.getZoneId(),
565567
session.getClientVersion(),
566568
session.getDatabaseName(),
@@ -580,35 +582,29 @@ public SessionInfo copySessionInfoForTreeModel(final SessionInfo sessionInfo) {
580582
}
581583

582584
public SessionInfo getSessionInfoOfTreeModel(IClientSession session) {
583-
User user = authorityFetcher.get().getUser(session.getUsername());
584-
long userId = user == null ? -1 : user.getUserId();
585585
return new SessionInfo(
586586
session.getId(),
587-
new UserEntity(userId, session.getUsername(), session.getClientAddress()),
587+
new UserEntity(session.getUserId(), session.getUsername(), session.getClientAddress()),
588588
ZoneId.systemDefault(),
589589
session.getClientVersion(),
590590
session.getDatabaseName(),
591591
IClientSession.SqlDialect.TREE);
592592
}
593593

594594
public SessionInfo getSessionInfoOfTableModel(IClientSession session) {
595-
User user = authorityFetcher.get().getUser(session.getUsername());
596-
long userId = user == null ? -1 : user.getUserId();
597595
return new SessionInfo(
598596
session.getId(),
599-
new UserEntity(userId, session.getUsername(), session.getClientAddress()),
597+
new UserEntity(session.getUserId(), session.getUsername(), session.getClientAddress()),
600598
ZoneId.systemDefault(),
601599
session.getClientVersion(),
602600
session.getDatabaseName(),
603601
IClientSession.SqlDialect.TABLE);
604602
}
605603

606604
public SessionInfo getSessionInfoOfPipeReceiver(IClientSession session, String databaseName) {
607-
User user = authorityFetcher.get().getUser(session.getUsername());
608-
long userId = user == null ? -1 : user.getUserId();
609605
return new SessionInfo(
610606
session.getId(),
611-
new UserEntity(userId, session.getUsername(), session.getClientAddress()),
607+
new UserEntity(session.getUserId(), session.getUsername(), session.getClientAddress()),
612608
ZoneId.systemDefault(),
613609
session.getClientVersion(),
614610
databaseName,

iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/thrift/impl/DataNodeInternalRPCServiceImpl.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1562,7 +1562,12 @@ public TSStatus executeCQ(TExecuteCQ req) {
15621562
SESSION_MANAGER.registerSession(session);
15631563

15641564
SESSION_MANAGER.supplySession(
1565-
session, req.getUsername(), ZoneId.of(req.getZoneId()), ClientVersion.V_1_0);
1565+
session,
1566+
// TODO: User the real userId
1567+
-1,
1568+
req.getUsername(),
1569+
ZoneId.of(req.getZoneId()),
1570+
ClientVersion.V_1_0);
15661571

15671572
String executedSQL = req.queryBody;
15681573

0 commit comments

Comments
 (0)