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

Reply via email to