From 99a7feaea5cd8157660e1e58f16f9d2d19ffe48b Mon Sep 17 00:00:00 2001 From: Jack Drogon Date: Tue, 14 Nov 2023 19:48:54 +0800 Subject: [PATCH] [hotfix](priv) Fix restore snapshot user priv with add cluster in UserIdentity (#26969) 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 58cb30bddea685..4ba1416cd5cbb8 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 c19be000e5f78f..e174025ab8c5bb 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 @@ -3071,14 +3071,15 @@ 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, "%"); ctx.setCurrentUserIdentity(currentUserIdentity); Analyzer analyzer = new Analyzer(ctx.getEnv(), ctx); 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) {