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) {