From 96f1aa43a3787f3caa668ac2c9ceacdb56b433d5 Mon Sep 17 00:00:00 2001 From: Jack Drogon Date: Sat, 18 Nov 2023 00:12:01 +0800 Subject: [PATCH] [hotfix](priv) Fix restore snapshot user priv with add cluster in UserIdentity (#26969) (#27210) Signed-off-by: Jack Drogon --- .../src/main/java/org/apache/doris/binlog/DBBinlog.java | 2 ++ .../java/org/apache/doris/service/FrontendServiceImpl.java | 5 +++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/binlog/DBBinlog.java b/fe/fe-core/src/main/java/org/apache/doris/binlog/DBBinlog.java index 58cb30bddea685d..4ba1416cd5cbb83 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/binlog/DBBinlog.java +++ b/fe/fe-core/src/main/java/org/apache/doris/binlog/DBBinlog.java @@ -181,6 +181,7 @@ public Pair getBinlog(long tableId, long prevCommitSeq) { if (tableId >= 0) { TableBinlog tableBinlog = tableBinlogMap.get(tableId); if (tableBinlog == null) { + LOG.warn("table binlog not found. tableId: {}", tableId); status.setStatusCode(TStatusCode.BINLOG_NOT_FOUND_TABLE); return Pair.of(status, null); } @@ -200,6 +201,7 @@ public Pair getBinlogLag(long tableId, long prevCommitSeq) { if (tableId >= 0) { TableBinlog tableBinlog = tableBinlogMap.get(tableId); if (tableBinlog == null) { + LOG.warn("table binlog not found. tableId: {}", tableId); status.setStatusCode(TStatusCode.BINLOG_NOT_FOUND_TABLE); return Pair.of(status, null); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/service/FrontendServiceImpl.java b/fe/fe-core/src/main/java/org/apache/doris/service/FrontendServiceImpl.java index cae63209120bb58..792d00bd63d96a9 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/service/FrontendServiceImpl.java +++ b/fe/fe-core/src/main/java/org/apache/doris/service/FrontendServiceImpl.java @@ -2894,7 +2894,8 @@ private TRestoreSnapshotResult restoreSnapshotImpl(TRestoreSnapshotRequest reque } ctx.setCluster(cluster); ctx.setQualifiedUser(request.getUser()); - UserIdentity currentUserIdentity = new UserIdentity(request.getUser(), "%"); + String fullUserName = ClusterNamespace.getFullName(cluster, request.getUser()); + UserIdentity currentUserIdentity = new UserIdentity(fullUserName, "%"); currentUserIdentity.setIsAnalyzed(); ctx.setCurrentUserIdentity(currentUserIdentity); @@ -2902,7 +2903,7 @@ private TRestoreSnapshotResult restoreSnapshotImpl(TRestoreSnapshotRequest reque restoreStmt.analyze(analyzer); DdlExecutor.execute(Env.getCurrentEnv(), restoreStmt); } catch (UserException e) { - LOG.warn("failed to get snapshot info: {}", e.getMessage()); + LOG.warn("failed to restore: {}", e.getMessage(), e); status.setStatusCode(TStatusCode.ANALYSIS_ERROR); status.addToErrorMsgs(e.getMessage()); } catch (Throwable e) {