This is an automated email from the ASF dual-hosted git repository.

xingtanzjr pushed a commit to branch xingtanzjr/write_opt
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/xingtanzjr/write_opt by this 
push:
     new fe80666ef5 add more metrics
fe80666ef5 is described below

commit fe80666ef5411db0a002493d963f6de03425832f
Author: Jinrui.Zhang <[email protected]>
AuthorDate: Mon Jun 20 16:37:58 2022 +0800

    add more metrics
---
 .../org/apache/iotdb/db/mpp/plan/Coordinator.java  | 48 +++++++++++---------
 .../db/mpp/plan/execution/QueryExecution.java      | 52 +++++++++++++---------
 .../db/mpp/plan/scheduler/StandaloneScheduler.java |  1 -
 3 files changed, 58 insertions(+), 43 deletions(-)

diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/Coordinator.java 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/Coordinator.java
index 610b586ceb..495af1f3e0 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/Coordinator.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/Coordinator.java
@@ -109,29 +109,33 @@ public class Coordinator {
       String sql,
       IPartitionFetcher partitionFetcher,
       ISchemaFetcher schemaFetcher) {
-
-    QueryId globalQueryId = queryIdGenerator.createNextQueryId();
-    try (SetThreadName queryName = new SetThreadName(globalQueryId.getId())) {
-      //      if (sql != null) {
-      //        LOGGER.info("start executing sql: {}", sql);
-      //      }
-      IQueryExecution execution =
-          createQueryExecution(
-              statement,
-              new MPPQueryContext(
-                  sql,
-                  globalQueryId,
-                  session,
-                  DataNodeEndPoints.LOCAL_HOST_DATA_BLOCK_ENDPOINT,
-                  DataNodeEndPoints.LOCAL_HOST_INTERNAL_ENDPOINT),
-              partitionFetcher,
-              schemaFetcher);
-      if (execution.isQuery()) {
-        queryExecutionMap.put(queryId, execution);
+    long startTime = System.nanoTime();
+    try {
+      QueryId globalQueryId = queryIdGenerator.createNextQueryId();
+      try (SetThreadName queryName = new SetThreadName(globalQueryId.getId())) 
{
+        //      if (sql != null) {
+        //        LOGGER.info("start executing sql: {}", sql);
+        //      }
+        IQueryExecution execution =
+            createQueryExecution(
+                statement,
+                new MPPQueryContext(
+                    sql,
+                    globalQueryId,
+                    session,
+                    DataNodeEndPoints.LOCAL_HOST_DATA_BLOCK_ENDPOINT,
+                    DataNodeEndPoints.LOCAL_HOST_INTERNAL_ENDPOINT),
+                partitionFetcher,
+                schemaFetcher);
+        if (execution.isQuery()) {
+          queryExecutionMap.put(queryId, execution);
+        }
+        execution.start();
+
+        return execution.getStatus();
       }
-      execution.start();
-
-      return execution.getStatus();
+    } finally {
+      StepTracker.trace("statementExec", startTime, System.nanoTime());
     }
   }
 
diff --git 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/QueryExecution.java
 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/QueryExecution.java
index 48f018b19c..51a513542f 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/QueryExecution.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/QueryExecution.java
@@ -113,6 +113,8 @@ public class QueryExecution implements IQueryExecution {
   private final IClientManager<TEndPoint, SyncDataNodeInternalServiceClient>
       internalServiceClientManager;
 
+  private long queryExecutionStartTime;
+
   public QueryExecution(
       Statement statement,
       MPPQueryContext context,
@@ -122,12 +124,15 @@ public class QueryExecution implements IQueryExecution {
       IPartitionFetcher partitionFetcher,
       ISchemaFetcher schemaFetcher,
       IClientManager<TEndPoint, SyncDataNodeInternalServiceClient> 
internalServiceClientManager) {
+    this.queryExecutionStartTime = System.nanoTime();
     this.executor = executor;
     this.writeOperationExecutor = writeOperationExecutor;
     this.scheduledExecutor = scheduledExecutor;
     this.context = context;
     this.planOptimizers = new ArrayList<>();
+    long startTime = System.nanoTime();
     this.analysis = analyze(statement, context, partitionFetcher, 
schemaFetcher);
+    StepTracker.trace("analyze", startTime, System.nanoTime());
     this.stateMachine = new QueryStateMachine(context.getQueryId(), executor);
     this.partitionFetcher = partitionFetcher;
     this.schemaFetcher = schemaFetcher;
@@ -339,28 +344,35 @@ public class QueryExecution implements IQueryExecution {
    * @return ExecutionStatus. Contains the QueryId and the TSStatus.
    */
   public ExecutionResult getStatus() {
-    // Although we monitor the state to transition to RUNNING, the future will 
return if any
-    // Terminated state is triggered
-    SettableFuture<QueryState> future = SettableFuture.create();
-    stateMachine.addStateChangeListener(
-        state -> {
-          if (state == QueryState.RUNNING || state.isDone()) {
-            future.set(state);
-          }
-        });
-
+    long startTime = System.nanoTime();
     try {
-      QueryState state = future.get();
-      // TODO: (xingtanzjr) use more TSStatusCode if the QueryState isn't 
FINISHED
-      return getExecutionResult(state);
-    } catch (InterruptedException | ExecutionException e) {
-      // TODO: (xingtanzjr) use more accurate error handling
-      if (e instanceof InterruptedException) {
-        Thread.currentThread().interrupt();
+      // Although we monitor the state to transition to RUNNING, the future 
will return if any
+      // Terminated state is triggered
+      SettableFuture<QueryState> future = SettableFuture.create();
+      stateMachine.addStateChangeListener(
+          state -> {
+            if (state == QueryState.RUNNING || state.isDone()) {
+              future.set(state);
+            }
+          });
+
+      try {
+        QueryState state = future.get();
+        // TODO: (xingtanzjr) use more TSStatusCode if the QueryState isn't 
FINISHED
+        return getExecutionResult(state);
+      } catch (InterruptedException | ExecutionException e) {
+        // TODO: (xingtanzjr) use more accurate error handling
+        if (e instanceof InterruptedException) {
+          Thread.currentThread().interrupt();
+        }
+        return new ExecutionResult(
+            context.getQueryId(),
+            RpcUtils.getStatus(
+                TSStatusCode.INTERNAL_SERVER_ERROR, 
stateMachine.getFailureMessage()));
       }
-      return new ExecutionResult(
-          context.getQueryId(),
-          RpcUtils.getStatus(TSStatusCode.INTERNAL_SERVER_ERROR, 
stateMachine.getFailureMessage()));
+    } finally {
+      StepTracker.trace("getStatus", startTime, System.nanoTime());
+      StepTracker.trace("QueryExecutionLifeCycle", 
this.queryExecutionStartTime, System.nanoTime());
     }
   }
 
diff --git 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/scheduler/StandaloneScheduler.java
 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/scheduler/StandaloneScheduler.java
index 89bacfb562..5433b07c7c 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/scheduler/StandaloneScheduler.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/scheduler/StandaloneScheduler.java
@@ -98,7 +98,6 @@ public class StandaloneScheduler implements IScheduler {
   @Override
   public void start() {
     stateMachine.transitionToDispatching();
-    LOGGER.info("{} transit to DISPATCHING", getLogHeader());
     // For the FragmentInstance of WRITE, it will be executed directly when 
dispatching.
     // TODO: Other QueryTypes
     switch (queryType) {

Reply via email to