This is an automated email from the ASF dual-hosted git repository. kxiao pushed a commit to branch branch-2.0 in repository https://gitbox.apache.org/repos/asf/doris.git
commit 08719f9757e60713b35fc5c04f0a37dac15118f1 Author: wangbo <wan...@apache.org> AuthorDate: Sat Sep 2 01:09:23 2023 +0800 [improvement](profile)Add workload group in audit log and profile (#23761) --- .../java/org/apache/doris/common/profile/SummaryProfile.java | 10 ++++++++-- .../src/main/java/org/apache/doris/plugin/AuditEvent.java | 8 ++++++++ .../src/main/java/org/apache/doris/qe/ConnectContext.java | 11 +++++++++++ .../src/main/java/org/apache/doris/qe/ConnectProcessor.java | 1 + .../src/main/java/org/apache/doris/qe/StmtExecutor.java | 3 +++ .../apache/doris/resource/workloadgroup/WorkloadGroupMgr.java | 1 + 6 files changed, 32 insertions(+), 2 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/common/profile/SummaryProfile.java b/fe/fe-core/src/main/java/org/apache/doris/common/profile/SummaryProfile.java index 37f166ec6f..738369bbda 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/common/profile/SummaryProfile.java +++ b/fe/fe-core/src/main/java/org/apache/doris/common/profile/SummaryProfile.java @@ -50,6 +50,7 @@ public class SummaryProfile { public static final String INSTANCES_NUM_PER_BE = "Instances Num Per BE"; public static final String PARALLEL_FRAGMENT_EXEC_INSTANCE = "Parallel Fragment Exec Instance Num"; public static final String TRACE_ID = "Trace ID"; + public static final String WORKLOAD_GROUP = "Workload Group"; // Execution Summary public static final String ANALYSIS_TIME = "Analysis Time"; @@ -74,8 +75,8 @@ public class SummaryProfile { public static final ImmutableList<String> SUMMARY_KEYS = ImmutableList.of(PROFILE_ID, TASK_TYPE, START_TIME, END_TIME, TOTAL_TIME, TASK_STATE, USER, DEFAULT_DB, SQL_STATEMENT); - public static final ImmutableList<String> EXECUTION_SUMMARY_KEYS = ImmutableList.of(ANALYSIS_TIME, PLAN_TIME, - JOIN_REORDER_TIME, CREATE_SINGLE_NODE_TIME, QUERY_DISTRIBUTED_TIME, + public static final ImmutableList<String> EXECUTION_SUMMARY_KEYS = ImmutableList.of(WORKLOAD_GROUP, ANALYSIS_TIME, + PLAN_TIME, JOIN_REORDER_TIME, CREATE_SINGLE_NODE_TIME, QUERY_DISTRIBUTED_TIME, INIT_SCAN_NODE_TIME, FINALIZE_SCAN_NODE_TIME, GET_SPLITS_TIME, GET_PARTITIONS_TIME, GET_PARTITION_FILES_TIME, CREATE_SCAN_RANGE_TIME, SCHEDULE_TIME, FETCH_RESULT_TIME, WRITE_RESULT_TIME, WAIT_FETCH_RESULT_TIME, DORIS_VERSION, IS_NEREIDS, IS_PIPELINE, @@ -317,6 +318,11 @@ public class SummaryProfile { return this; } + public SummaryBuilder workloadGroup(String workloadGroup) { + map.put(WORKLOAD_GROUP, workloadGroup); + return this; + } + public SummaryBuilder sqlStatement(String val) { map.put(SQL_STATEMENT, val); return this; diff --git a/fe/fe-core/src/main/java/org/apache/doris/plugin/AuditEvent.java b/fe/fe-core/src/main/java/org/apache/doris/plugin/AuditEvent.java index d2981eed60..dbef8321b5 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/plugin/AuditEvent.java +++ b/fe/fe-core/src/main/java/org/apache/doris/plugin/AuditEvent.java @@ -94,6 +94,9 @@ public class AuditEvent { public String sqlDigest = ""; @AuditField(value = "TraceId") public String traceId = ""; + @AuditField(value = "WorkloadGroup") + public String workloadGroup = ""; + // note: newly added fields should be always before fuzzyVariables @AuditField(value = "FuzzyVariables") public String fuzzyVariables = ""; @@ -228,6 +231,11 @@ public class AuditEvent { return this; } + public AuditEventBuilder setWorkloadGroup(String workloadGroup) { + auditEvent.workloadGroup = workloadGroup; + return this; + } + public AuditEvent build() { return this.auditEvent; } diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/ConnectContext.java b/fe/fe-core/src/main/java/org/apache/doris/qe/ConnectContext.java index 1f62023f14..89f1a9e74e 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/qe/ConnectContext.java +++ b/fe/fe-core/src/main/java/org/apache/doris/qe/ConnectContext.java @@ -166,6 +166,8 @@ public class ConnectContext { private Map<String, String> resultAttachedInfo; + private String workloadGroupName = ""; + public void setUserQueryTimeout(int queryTimeout) { if (queryTimeout > 0) { sessionVariable.setQueryTimeoutS(queryTimeout); @@ -776,5 +778,14 @@ public class ConnectContext { public void setStatsErrorEstimator(StatsErrorEstimator statsErrorEstimator) { this.statsErrorEstimator = statsErrorEstimator; } + + public void setWorkloadGroupName(String workloadGroupName) { + this.workloadGroupName = workloadGroupName; + } + + public String getWorkloadGroupName() { + return this.workloadGroupName; + } + } diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/ConnectProcessor.java b/fe/fe-core/src/main/java/org/apache/doris/qe/ConnectProcessor.java index 5bef0c05be..2bdfba3548 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/qe/ConnectProcessor.java +++ b/fe/fe-core/src/main/java/org/apache/doris/qe/ConnectProcessor.java @@ -300,6 +300,7 @@ public class ConnectProcessor { .setStmtId(ctx.getStmtId()) .setQueryId(ctx.queryId() == null ? "NaN" : DebugUtil.printId(ctx.queryId())) .setTraceId(spanContext.isValid() ? spanContext.getTraceId() : "") + .setWorkloadGroup(ctx.getWorkloadGroupName()) .setFuzzyVariables(!printFuzzyVariables ? "" : ctx.getSessionVariable().printFuzzyVariables()); if (ctx.getState().isQuery()) { diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/StmtExecutor.java b/fe/fe-core/src/main/java/org/apache/doris/qe/StmtExecutor.java index 626a9e24f2..b9d6c866bf 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/qe/StmtExecutor.java +++ b/fe/fe-core/src/main/java/org/apache/doris/qe/StmtExecutor.java @@ -306,6 +306,7 @@ public class StmtExecutor { : context.getState().toString()); builder.user(context.getQualifiedUser()); builder.defaultDb(context.getDatabase()); + builder.workloadGroup(context.getWorkloadGroupName()); builder.sqlStatement(originStmt.originStmt); builder.isCached(isCached ? "Yes" : "No"); @@ -1350,6 +1351,8 @@ public class StmtExecutor { coord = new Coordinator(context, analyzer, planner, context.getStatsErrorEstimator()); if (Config.enable_workload_group && context.sessionVariable.getEnablePipelineEngine()) { coord.setTWorkloadGroups(context.getEnv().getWorkloadGroupMgr().getWorkloadGroup(context)); + } else { + context.setWorkloadGroupName(""); } QeProcessorImpl.INSTANCE.registerQuery(context.queryId(), new QeProcessorImpl.QueryInfo(context, originStmt.originStmt, coord)); diff --git a/fe/fe-core/src/main/java/org/apache/doris/resource/workloadgroup/WorkloadGroupMgr.java b/fe/fe-core/src/main/java/org/apache/doris/resource/workloadgroup/WorkloadGroupMgr.java index 5bd43e781d..13948442fc 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/resource/workloadgroup/WorkloadGroupMgr.java +++ b/fe/fe-core/src/main/java/org/apache/doris/resource/workloadgroup/WorkloadGroupMgr.java @@ -118,6 +118,7 @@ public class WorkloadGroupMgr implements Writable, GsonPostProcessable { throw new UserException("Workload group " + groupName + " does not exist"); } workloadGroups.add(workloadGroup.toThrift()); + context.setWorkloadGroupName(groupName); } finally { readUnlock(); } --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org