You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by wu...@apache.org on 2020/04/19 12:14:43 UTC

[skywalking] branch metrics updated: Fix trace query

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

wusheng pushed a commit to branch metrics
in repository https://gitbox.apache.org/repos/asf/skywalking.git


The following commit(s) were added to refs/heads/metrics by this push:
     new 20299eb  Fix trace query
20299eb is described below

commit 20299eb9f6a7f3df896d7a1abc2f44c9c55a90e9
Author: Wu Sheng <wu...@foxmail.com>
AuthorDate: Sun Apr 19 20:13:56 2020 +0800

    Fix trace query
---
 .../oap/server/core/query/input/Duration.java      | 10 ++++-
 .../core/storage/query/IMetadataQueryDAO.java      |  7 ---
 .../oap/query/graphql/resolver/LogQuery.java       |  8 +---
 .../oap/query/graphql/resolver/TraceQuery.java     | 13 ++----
 .../elasticsearch/query/MetadataQueryEsDAO.java    | 46 +-------------------
 .../elasticsearch7/query/MetadataQueryEs7DAO.java  | 50 ----------------------
 .../plugin/jdbc/h2/dao/H2MetadataQueryDAO.java     | 46 +-------------------
 7 files changed, 16 insertions(+), 164 deletions(-)

diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/input/Duration.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/input/Duration.java
index f3895b3..88f0fe0 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/input/Duration.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/input/Duration.java
@@ -19,8 +19,8 @@
 package org.apache.skywalking.oap.server.core.query.input;
 
 import java.util.List;
-import org.apache.skywalking.oap.server.core.query.PointOfTime;
 import org.apache.skywalking.oap.server.core.query.DurationUtils;
+import org.apache.skywalking.oap.server.core.query.PointOfTime;
 import org.apache.skywalking.oap.server.core.query.enumeration.Step;
 
 public class Duration {
@@ -42,6 +42,14 @@ public class Duration {
         return DurationUtils.INSTANCE.convertToTimeBucket(end);
     }
 
+    public long getStartTimeBucketInSec() {
+        return DurationUtils.INSTANCE.startTimeDurationToSecondTimeBucket(step, start);
+    }
+
+    public long getEndTimeBucketInSec() {
+        return DurationUtils.INSTANCE.endTimeDurationToSecondTimeBucket(step, start);
+    }
+
     /**
      * Assemble time point based on {@link #step} and {@link #start} / {@link #end}
      */
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/query/IMetadataQueryDAO.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/query/IMetadataQueryDAO.java
index e676cf0..9140031 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/query/IMetadataQueryDAO.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/query/IMetadataQueryDAO.java
@@ -27,13 +27,6 @@ import org.apache.skywalking.oap.server.core.query.type.ServiceInstance;
 import org.apache.skywalking.oap.server.core.storage.DAO;
 
 public interface IMetadataQueryDAO extends DAO {
-
-    int numOfService(final long startTimestamp, final long endTimestamp) throws IOException;
-
-    int numOfEndpoint() throws IOException;
-
-    int numOfConjectural(final int nodeTypeValue) throws IOException;
-
     List<Service> getAllServices(final long startTimestamp, final long endTimestamp) throws IOException;
 
     List<Service> getAllBrowserServices(long startTimestamp, long endTimestamp) throws IOException;
diff --git a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/resolver/LogQuery.java b/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/resolver/LogQuery.java
index cb9444e..06c5a8d 100644
--- a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/resolver/LogQuery.java
+++ b/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/resolver/LogQuery.java
@@ -48,12 +48,8 @@ public class LogQuery implements GraphQLQueryResolver {
         long startSecondTB = 0;
         long endSecondTB = 0;
         if (nonNull(condition.getQueryDuration())) {
-            startSecondTB = DurationUtils.INSTANCE.startTimeDurationToSecondTimeBucket(condition.getQueryDuration()
-                                                                                                .getStep(), condition.getQueryDuration()
-                                                                                                                     .getStart());
-            endSecondTB = DurationUtils.INSTANCE.endTimeDurationToSecondTimeBucket(condition.getQueryDuration()
-                                                                                            .getStep(), condition.getQueryDuration()
-                                                                                                                 .getEnd());
+            startSecondTB = condition.getQueryDuration().getStartTimeBucketInSec();
+            endSecondTB = condition.getQueryDuration().getEndTimeBucketInSec();
         }
 
         return getQueryService().queryLogs(condition.getMetricName(), condition.getServiceId(), condition.getServiceInstanceId(), condition
diff --git a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/resolver/TraceQuery.java b/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/resolver/TraceQuery.java
index 8818d7e..804334e 100644
--- a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/resolver/TraceQuery.java
+++ b/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/resolver/TraceQuery.java
@@ -21,12 +21,11 @@ package org.apache.skywalking.oap.query.graphql.resolver;
 import com.coxautodev.graphql.tools.GraphQLQueryResolver;
 import com.google.common.base.Strings;
 import java.io.IOException;
-import org.apache.skywalking.oap.server.core.query.input.TraceQueryCondition;
 import org.apache.skywalking.oap.server.core.Const;
 import org.apache.skywalking.oap.server.core.CoreModule;
 import org.apache.skywalking.oap.server.core.UnexpectedException;
-import org.apache.skywalking.oap.server.core.query.DurationUtils;
 import org.apache.skywalking.oap.server.core.query.TraceQueryService;
+import org.apache.skywalking.oap.server.core.query.input.TraceQueryCondition;
 import org.apache.skywalking.oap.server.core.query.type.Pagination;
 import org.apache.skywalking.oap.server.core.query.type.QueryOrder;
 import org.apache.skywalking.oap.server.core.query.type.Trace;
@@ -60,14 +59,8 @@ public class TraceQuery implements GraphQLQueryResolver {
         if (!Strings.isNullOrEmpty(condition.getTraceId())) {
             traceId = condition.getTraceId();
         } else if (nonNull(condition.getQueryDuration())) {
-            startSecondTB = DurationUtils.INSTANCE.startTimeDurationToSecondTimeBucket(
-                condition.getQueryDuration()
-                         .getStep(), condition.getQueryDuration()
-                                              .getStart());
-            endSecondTB = DurationUtils.INSTANCE.endTimeDurationToSecondTimeBucket(
-                condition.getQueryDuration()
-                         .getStep(), condition.getQueryDuration()
-                                              .getEnd());
+            startSecondTB = condition.getQueryDuration().getStartTimeBucketInSec();
+            endSecondTB = condition.getQueryDuration().getEndTimeBucketInSec();
         } else {
             throw new UnexpectedException("The condition must contains either queryDuration or traceId.");
         }
diff --git a/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/MetadataQueryEsDAO.java b/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/MetadataQueryEsDAO.java
index 5db1397..8f543d2 100644
--- a/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/MetadataQueryEsDAO.java
+++ b/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/MetadataQueryEsDAO.java
@@ -19,7 +19,6 @@
 package org.apache.skywalking.oap.server.storage.plugin.elasticsearch.query;
 
 import com.google.common.base.Strings;
-import com.google.gson.Gson;
 import com.google.gson.JsonElement;
 import com.google.gson.JsonObject;
 import java.io.IOException;
@@ -32,10 +31,10 @@ import org.apache.skywalking.oap.server.core.analysis.TimeBucket;
 import org.apache.skywalking.oap.server.core.analysis.manual.endpoint.EndpointTraffic;
 import org.apache.skywalking.oap.server.core.analysis.manual.instance.InstanceTraffic;
 import org.apache.skywalking.oap.server.core.analysis.manual.service.ServiceTraffic;
+import org.apache.skywalking.oap.server.core.query.enumeration.Language;
 import org.apache.skywalking.oap.server.core.query.type.Attribute;
 import org.apache.skywalking.oap.server.core.query.type.Database;
 import org.apache.skywalking.oap.server.core.query.type.Endpoint;
-import org.apache.skywalking.oap.server.core.query.enumeration.Language;
 import org.apache.skywalking.oap.server.core.query.type.Service;
 import org.apache.skywalking.oap.server.core.query.type.ServiceInstance;
 import org.apache.skywalking.oap.server.core.storage.query.IMetadataQueryDAO;
@@ -52,8 +51,6 @@ import org.elasticsearch.search.builder.SearchSourceBuilder;
 import static org.apache.skywalking.oap.server.core.analysis.manual.instance.InstanceTraffic.PropertyUtil.LANGUAGE;
 
 public class MetadataQueryEsDAO extends EsDAO implements IMetadataQueryDAO {
-    private static final Gson GSON = new Gson();
-
     private final int queryMaxSize;
 
     public MetadataQueryEsDAO(ElasticSearchClient client, int queryMaxSize) {
@@ -62,47 +59,6 @@ public class MetadataQueryEsDAO extends EsDAO implements IMetadataQueryDAO {
     }
 
     @Override
-    public int numOfService(long startTimestamp, long endTimestamp) throws IOException {
-        SearchSourceBuilder sourceBuilder = SearchSourceBuilder.searchSource();
-
-        BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
-        boolQueryBuilder.must().add(QueryBuilders.termQuery(ServiceTraffic.NODE_TYPE, NodeType.Normal.value()));
-        sourceBuilder.query(boolQueryBuilder);
-        sourceBuilder.size(0);
-
-        SearchResponse response = getClient().search(ServiceTraffic.INDEX_NAME, sourceBuilder);
-        return (int) response.getHits().getTotalHits();
-    }
-
-    /**
-     * @since 7.0.0, as EndpointInventory has been replaced by EndpointTraffic. This is not an accurate number anymore.
-     */
-    @Override
-    public int numOfEndpoint() throws IOException {
-        SearchSourceBuilder sourceBuilder = SearchSourceBuilder.searchSource();
-
-        BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
-
-        sourceBuilder.query(boolQueryBuilder);
-        sourceBuilder.size(0);
-
-        SearchResponse response = getClient().search(EndpointTraffic.INDEX_NAME, sourceBuilder);
-        return (int) response.getHits().getTotalHits();
-    }
-
-    @Override
-    public int numOfConjectural(int nodeTypeValue) throws IOException {
-        SearchSourceBuilder sourceBuilder = SearchSourceBuilder.searchSource();
-
-        sourceBuilder.query(QueryBuilders.termQuery(ServiceTraffic.NODE_TYPE, nodeTypeValue));
-        sourceBuilder.size(0);
-
-        SearchResponse response = getClient().search(ServiceTraffic.INDEX_NAME, sourceBuilder);
-
-        return (int) response.getHits().getTotalHits();
-    }
-
-    @Override
     public List<Service> getAllServices(long startTimestamp, long endTimestamp) throws IOException {
         SearchSourceBuilder sourceBuilder = SearchSourceBuilder.searchSource();
 
diff --git a/oap-server/server-storage-plugin/storage-elasticsearch7-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch7/query/MetadataQueryEs7DAO.java b/oap-server/server-storage-plugin/storage-elasticsearch7-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch7/query/MetadataQueryEs7DAO.java
index da0c278..89813d4 100644
--- a/oap-server/server-storage-plugin/storage-elasticsearch7-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch7/query/MetadataQueryEs7DAO.java
+++ b/oap-server/server-storage-plugin/storage-elasticsearch7-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch7/query/MetadataQueryEs7DAO.java
@@ -18,62 +18,12 @@
 
 package org.apache.skywalking.oap.server.storage.plugin.elasticsearch7.query;
 
-import java.io.IOException;
-import org.apache.skywalking.oap.server.core.analysis.NodeType;
-import org.apache.skywalking.oap.server.core.analysis.manual.endpoint.EndpointTraffic;
-import org.apache.skywalking.oap.server.core.analysis.manual.service.ServiceTraffic;
 import org.apache.skywalking.oap.server.library.client.elasticsearch.ElasticSearchClient;
 import org.apache.skywalking.oap.server.storage.plugin.elasticsearch.query.MetadataQueryEsDAO;
-import org.elasticsearch.action.search.SearchResponse;
-import org.elasticsearch.index.query.BoolQueryBuilder;
-import org.elasticsearch.index.query.QueryBuilders;
-import org.elasticsearch.search.builder.SearchSourceBuilder;
 
 public class MetadataQueryEs7DAO extends MetadataQueryEsDAO {
 
     public MetadataQueryEs7DAO(final ElasticSearchClient client, final int queryMaxSize) {
         super(client, queryMaxSize);
     }
-
-    @Override
-    public int numOfService(long startTimestamp, long endTimestamp) throws IOException {
-        SearchSourceBuilder sourceBuilder = SearchSourceBuilder.searchSource();
-
-        BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
-        boolQueryBuilder.must().add(QueryBuilders.termQuery(ServiceTraffic.NODE_TYPE, NodeType.Normal.value()));
-        sourceBuilder.query(boolQueryBuilder);
-        sourceBuilder.size(0);
-
-        SearchResponse response = getClient().search(ServiceTraffic.INDEX_NAME, sourceBuilder);
-        return (int) response.getHits().getTotalHits().value;
-    }
-
-    /**
-     * @since 7.0.0, as EndpointInventory has been replaced by EndpointTraffic. This is not an accurate number anymore.
-     */
-    @Override
-    public int numOfEndpoint() throws IOException {
-        SearchSourceBuilder sourceBuilder = SearchSourceBuilder.searchSource();
-
-        BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
-
-        sourceBuilder.query(boolQueryBuilder);
-        sourceBuilder.size(0);
-
-        SearchResponse response = getClient().search(EndpointTraffic.INDEX_NAME, sourceBuilder);
-        return (int) response.getHits().getTotalHits().value;
-    }
-
-    @Override
-    public int numOfConjectural(int nodeTypeValue) throws IOException {
-        SearchSourceBuilder sourceBuilder = SearchSourceBuilder.searchSource();
-
-        sourceBuilder.query(QueryBuilders.termQuery(ServiceTraffic.NODE_TYPE, nodeTypeValue));
-        sourceBuilder.size(0);
-
-        SearchResponse response = getClient().search(ServiceTraffic.INDEX_NAME, sourceBuilder);
-
-        return (int) response.getHits().getTotalHits().value;
-    }
-
 }
diff --git a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2MetadataQueryDAO.java b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2MetadataQueryDAO.java
index 929e64b..2566ab2 100644
--- a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2MetadataQueryDAO.java
+++ b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2MetadataQueryDAO.java
@@ -34,10 +34,10 @@ import org.apache.skywalking.oap.server.core.analysis.TimeBucket;
 import org.apache.skywalking.oap.server.core.analysis.manual.endpoint.EndpointTraffic;
 import org.apache.skywalking.oap.server.core.analysis.manual.instance.InstanceTraffic;
 import org.apache.skywalking.oap.server.core.analysis.manual.service.ServiceTraffic;
+import org.apache.skywalking.oap.server.core.query.enumeration.Language;
 import org.apache.skywalking.oap.server.core.query.type.Attribute;
 import org.apache.skywalking.oap.server.core.query.type.Database;
 import org.apache.skywalking.oap.server.core.query.type.Endpoint;
-import org.apache.skywalking.oap.server.core.query.enumeration.Language;
 import org.apache.skywalking.oap.server.core.query.type.Service;
 import org.apache.skywalking.oap.server.core.query.type.ServiceInstance;
 import org.apache.skywalking.oap.server.core.storage.query.IMetadataQueryDAO;
@@ -55,50 +55,6 @@ public class H2MetadataQueryDAO implements IMetadataQueryDAO {
     }
 
     @Override
-    public int numOfService(long startTimestamp, long endTimestamp) throws IOException {
-        StringBuilder sql = new StringBuilder();
-        List<Object> condition = new ArrayList<>(5);
-        sql.append("select count(1) num from ").append(ServiceTraffic.INDEX_NAME).append(" where ");
-        sql.append(ServiceTraffic.NODE_TYPE).append("=" + NodeType.Normal.value());
-
-        return getNum(sql, condition);
-    }
-
-    private Integer getNum(StringBuilder sql, List<Object> condition) throws IOException {
-        try (Connection connection = h2Client.getConnection()) {
-            try (ResultSet resultSet = h2Client.executeQuery(
-                connection, sql.toString(), condition.toArray(new Object[0]))) {
-                if (resultSet.next()) {
-                    return resultSet.getInt("num");
-                }
-            }
-        } catch (SQLException e) {
-            throw new IOException(e);
-        }
-        return 0;
-    }
-
-    @Override
-    public int numOfEndpoint() throws IOException {
-        StringBuilder sql = new StringBuilder();
-        List<Object> condition = new ArrayList<>(5);
-        sql.append("select count(*) num from ").append(EndpointTraffic.INDEX_NAME);
-
-        return getNum(sql, condition);
-    }
-
-    @Override
-    public int numOfConjectural(int nodeTypeValue) throws IOException {
-        StringBuilder sql = new StringBuilder();
-        List<Object> condition = new ArrayList<>(5);
-        sql.append("select count(*) num from ").append(ServiceTraffic.INDEX_NAME).append(" where ");
-        sql.append(ServiceTraffic.NODE_TYPE).append("=?");
-        condition.add(nodeTypeValue);
-
-        return getNum(sql, condition);
-    }
-
-    @Override
     public List<Service> getAllServices(long startTimestamp, long endTimestamp) throws IOException {
         StringBuilder sql = new StringBuilder();
         List<Object> condition = new ArrayList<>(5);