diff --git a/apm-protocol/apm-network/src/main/proto b/apm-protocol/apm-network/src/main/proto index 7b244ff7ec350910295eee85633e02d92a6f6b1c..c331e840908905460c0d8df7573fa33ea6764873 160000 --- a/apm-protocol/apm-network/src/main/proto +++ b/apm-protocol/apm-network/src/main/proto @@ -1 +1 @@ -Subproject commit 7b244ff7ec350910295eee85633e02d92a6f6b1c +Subproject commit c331e840908905460c0d8df7573fa33ea6764873 diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/remote/ServiceAndEndpointRegisterClient.java b/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/remote/ServiceAndEndpointRegisterClient.java index 9c68ac3ee33e3e3f0915934fd12fa2200047c046..2ed5aaa58c07b1e193f79e9b33ad55c8135c6a4c 100755 --- a/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/remote/ServiceAndEndpointRegisterClient.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/remote/ServiceAndEndpointRegisterClient.java @@ -41,6 +41,7 @@ import org.apache.skywalking.apm.agent.core.os.OSUtil; import org.apache.skywalking.apm.network.common.Commands; import org.apache.skywalking.apm.network.common.KeyIntValuePair; import org.apache.skywalking.apm.network.common.KeyStringValuePair; +import org.apache.skywalking.apm.network.common.ServiceType; import org.apache.skywalking.apm.network.register.v2.RegisterGrpc; import org.apache.skywalking.apm.network.register.v2.Service; import org.apache.skywalking.apm.network.register.v2.ServiceInstance; @@ -141,7 +142,7 @@ public class ServiceAndEndpointRegisterClient implements BootService, Runnable, if (RemoteDownstreamConfig.Agent.SERVICE_ID == DictionaryUtil.nullValue()) { if (registerBlockingStub != null) { ServiceRegisterMapping serviceRegisterMapping = registerBlockingStub.withDeadlineAfter(GRPC_UPSTREAM_TIMEOUT, TimeUnit.SECONDS).doServiceRegister( - Services.newBuilder().addServices(Service.newBuilder().setServiceName(Config.Agent.SERVICE_NAME)).build()); + Services.newBuilder().addServices(Service.newBuilder().setServiceName(Config.Agent.SERVICE_NAME).setType(ServiceType.normal)).build()); if (serviceRegisterMapping != null) { for (KeyIntValuePair registered : serviceRegisterMapping.getServicesList()) { if (Config.Agent.SERVICE_NAME.equals(registered.getKey())) { diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/MetadataQueryService.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/MetadataQueryService.java index 1b722978b9230bf0cfaf54f43c3a5def4a0778f8..8b6e3672c4fcecbb9b732d7668e01a949aadc0a2 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/MetadataQueryService.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/MetadataQueryService.java @@ -77,6 +77,10 @@ public class MetadataQueryService implements org.apache.skywalking.oap.server.li return getMetadataQueryDAO().getAllServices(startTimestamp, endTimestamp); } + public List getAllBrowserServices(final long startTimestamp, final long endTimestamp) throws IOException { + return getMetadataQueryDAO().getAllBrowserServices(startTimestamp, endTimestamp); + } + public List getAllDatabases() throws IOException { return getMetadataQueryDAO().getAllDatabases(); } diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/NodeType.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/NodeType.java index 2d0aeb08b91cbefe8bbc5d9a889310838719b962..c5d497b67549403583579a4d597cba7818f8801a 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/NodeType.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/NodeType.java @@ -18,6 +18,7 @@ package org.apache.skywalking.oap.server.core.register; +import org.apache.skywalking.apm.network.common.ServiceType; import org.apache.skywalking.oap.server.core.UnexpectedException; /** @@ -32,7 +33,7 @@ public enum NodeType { /** * Unknown = 0; */ - Unknown(0), + Normal(0), /** * Database = 1; */ @@ -53,6 +54,10 @@ public enum NodeType { * Cache = 5; */ Cache(5), + /** + * Browser = 6; + */ + Browser(6), UNRECOGNIZED(-1); private final int value; @@ -68,7 +73,7 @@ public enum NodeType { public static NodeType get(int value) { switch (value) { case 0: - return Unknown; + return Normal; case 1: return Database; case 2: @@ -95,4 +100,21 @@ public enum NodeType { public static NodeType fromSpanLayerValue(int spanLayerValue) { return get(spanLayerValue); } + + public static NodeType fromRegisterServiceType(ServiceType serviceType) { + switch (serviceType) { + case normal: + return Normal; + case database: + return Database; + case cache: + return Cache; + case mq: + return MQ; + case browser: + return Browser; + default: + return Normal; + } + } } diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/ServiceInventory.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/ServiceInventory.java index 9a6357b21b9cba72da21e56aa29cf7d1f30ec672..de171561202f28e0e1516fc7d39dfaa6382fd7d7 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/ServiceInventory.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/ServiceInventory.java @@ -58,7 +58,10 @@ public class ServiceInventory extends RegisterSource { @Setter @Getter @Column(columnName = NAME, matchQuery = true) private String name = Const.EMPTY_STRING; @Setter @Getter @Column(columnName = IS_ADDRESS) private int isAddress; @Setter @Getter @Column(columnName = ADDRESS_ID) private int addressId; - @Setter(AccessLevel.PRIVATE) @Getter(AccessLevel.PRIVATE) @Column(columnName = NODE_TYPE) private int nodeType; + /** + * Node type of the service, default {@link NodeType#Normal} + */ + @Setter(AccessLevel.PRIVATE) @Getter(AccessLevel.PRIVATE) @Column(columnName = NODE_TYPE) private int nodeType = 0; @Setter @Getter @Column(columnName = MAPPING_SERVICE_ID) private int mappingServiceId; @Getter(AccessLevel.PRIVATE) @Column(columnName = PROPERTIES) private String prop = Const.EMPTY_JSON_OBJECT_STRING; @Getter private JsonObject properties; diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/service/IServiceInventoryRegister.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/service/IServiceInventoryRegister.java index 3aba70732ca24da741b2be0553d23db2a0a8a831..c30ef7e86cbea0ee6e6cd15e9e30af43c08b8731 100755 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/service/IServiceInventoryRegister.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/service/IServiceInventoryRegister.java @@ -29,6 +29,8 @@ public interface IServiceInventoryRegister extends Service { int getOrCreate(String serviceName, JsonObject properties); + int getOrCreate(String serviceName, NodeType nodeType, JsonObject properties); + int getOrCreate(int addressId, String serviceName, JsonObject properties); void update(int serviceId, NodeType nodeType, JsonObject properties); diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/service/ServiceInventoryRegister.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/service/ServiceInventoryRegister.java index e560fed71a1d46843e711200f2716edd276e1e84..5a45f61f59ce12f805c7fb7c54356cd4f3852380 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/service/ServiceInventoryRegister.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/service/ServiceInventoryRegister.java @@ -55,7 +55,7 @@ public class ServiceInventoryRegister implements IServiceInventoryRegister { return serviceInventoryCache; } - @Override public int getOrCreate(String serviceName, JsonObject properties) { + @Override public int getOrCreate(String serviceName, NodeType nodeType, JsonObject properties) { int serviceId = getServiceInventoryCache().getServiceId(serviceName); if (serviceId == Const.NONE) { @@ -67,6 +67,7 @@ public class ServiceInventoryRegister implements IServiceInventoryRegister { long now = System.currentTimeMillis(); serviceInventory.setRegisterTime(now); serviceInventory.setHeartbeatTime(now); + serviceInventory.setServiceNodeType(nodeType); serviceInventory.setMappingServiceId(Const.NONE); serviceInventory.setLastUpdateTime(now); serviceInventory.setProperties(properties); @@ -76,6 +77,10 @@ public class ServiceInventoryRegister implements IServiceInventoryRegister { return serviceId; } + @Override public int getOrCreate(String serviceName, JsonObject properties) { + return getOrCreate(serviceName, NodeType.Normal, properties); + } + @Override public int getOrCreate(int addressId, String serviceName, JsonObject properties) { int serviceId = getServiceInventoryCache().getServiceId(addressId); 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 7e4aa7cdd68057b75baec1591ee7e37e2e1f5f78..b3cb6263c113b7fc245f3bd38390148be10175e1 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 @@ -36,6 +36,8 @@ public interface IMetadataQueryDAO extends DAO { List getAllServices(final long startTimestamp, final long endTimestamp) throws IOException; + List getAllBrowserServices(long startTimestamp, long endTimestamp) throws IOException; + List getAllDatabases() throws IOException; List searchServices(final long startTimestamp, final long endTimestamp, diff --git a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/resolver/MetadataQuery.java b/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/resolver/MetadataQuery.java index d2cc8b1727130e8970f0b993bcb71770622973c7..bded832a8621172feb4c5f85e3c8bf1a55c538d7 100644 --- a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/resolver/MetadataQuery.java +++ b/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/resolver/MetadataQuery.java @@ -64,6 +64,13 @@ public class MetadataQuery implements GraphQLQueryResolver { return getMetadataQueryService().getAllServices(startTimestamp, endTimestamp); } + public List getAllBrowserServices(final Duration duration) throws IOException, ParseException { + long startTimestamp = DurationUtils.INSTANCE.startTimeToTimestamp(duration.getStep(), duration.getStart()); + long endTimestamp = DurationUtils.INSTANCE.endTimeToTimestamp(duration.getStep(), duration.getEnd()); + + return getMetadataQueryService().getAllBrowserServices(startTimestamp, endTimestamp); + } + public List searchServices(final Duration duration, final String keyword) throws IOException, ParseException { long startTimestamp = DurationUtils.INSTANCE.startTimeToTimestamp(duration.getStep(), duration.getStart()); diff --git a/oap-server/server-query-plugin/query-graphql-plugin/src/main/resources/query-protocol b/oap-server/server-query-plugin/query-graphql-plugin/src/main/resources/query-protocol index a52c7a957f02a37b9409b52fc55db774f20291bf..a9b48130626e4b4dcf46bb8268c7125cc6f50814 160000 --- a/oap-server/server-query-plugin/query-graphql-plugin/src/main/resources/query-protocol +++ b/oap-server/server-query-plugin/query-graphql-plugin/src/main/resources/query-protocol @@ -1 +1 @@ -Subproject commit a52c7a957f02a37b9409b52fc55db774f20291bf +Subproject commit a9b48130626e4b4dcf46bb8268c7125cc6f50814 diff --git a/oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v6/grpc/RegisterServiceHandler.java b/oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v6/grpc/RegisterServiceHandler.java index e568a299b2b630902b36be057b1f5d3370c1503a..63f547c4f3af2a6735bc0c0cf38541850a058d03 100644 --- a/oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v6/grpc/RegisterServiceHandler.java +++ b/oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v6/grpc/RegisterServiceHandler.java @@ -25,6 +25,7 @@ import java.util.List; import org.apache.skywalking.apm.network.common.Commands; import org.apache.skywalking.apm.network.common.KeyIntValuePair; import org.apache.skywalking.apm.network.common.KeyStringValuePair; +import org.apache.skywalking.apm.network.common.ServiceType; import org.apache.skywalking.apm.network.register.v2.EndpointMapping; import org.apache.skywalking.apm.network.register.v2.EndpointMappingElement; import org.apache.skywalking.apm.network.register.v2.Endpoints; @@ -41,6 +42,7 @@ import org.apache.skywalking.oap.server.core.Const; import org.apache.skywalking.oap.server.core.CoreModule; import org.apache.skywalking.oap.server.core.cache.ServiceInstanceInventoryCache; import org.apache.skywalking.oap.server.core.cache.ServiceInventoryCache; +import org.apache.skywalking.oap.server.core.register.NodeType; import org.apache.skywalking.oap.server.core.register.ServiceInstanceInventory; import org.apache.skywalking.oap.server.core.register.ServiceInventory; import org.apache.skywalking.oap.server.core.register.service.IEndpointInventoryRegister; @@ -90,7 +92,14 @@ public class RegisterServiceHandler extends RegisterGrpc.RegisterImplBase implem if (logger.isDebugEnabled()) { logger.debug("Register service, service code: {}", serviceName); } - int serviceId = serviceInventoryRegister.getOrCreate(serviceName, null); + + ServiceType serviceType = service.getType(); + if (serviceType == null) { + // All service register from agents before 7.0.0, should be be null. + serviceType = ServiceType.normal; + } + + int serviceId = serviceInventoryRegister.getOrCreate(serviceName, NodeType.fromRegisterServiceType(serviceType), null); if (serviceId != Const.NONE) { KeyIntValuePair value = KeyIntValuePair.newBuilder().setKey(serviceName).setValue(serviceId).build(); diff --git a/oap-server/server-receiver-plugin/zipkin-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/zipkin/analysis/transform/SpringSleuthSegmentBuilderTest.java b/oap-server/server-receiver-plugin/zipkin-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/zipkin/analysis/transform/SpringSleuthSegmentBuilderTest.java index c6ba1cce66e754f9fc098d06ec185bc723f091a7..905f0f732fccea626471e86884600cd0f931a866 100644 --- a/oap-server/server-receiver-plugin/zipkin-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/zipkin/analysis/transform/SpringSleuthSegmentBuilderTest.java +++ b/oap-server/server-receiver-plugin/zipkin-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/zipkin/analysis/transform/SpringSleuthSegmentBuilderTest.java @@ -56,6 +56,10 @@ public class SpringSleuthSegmentBuilderTest implements SegmentListener { } } + @Override public int getOrCreate(String serviceName, NodeType nodeType, JsonObject properties) { + return getOrCreate(serviceName, properties); + } + @Override public int getOrCreate(int addressId, String serviceName, JsonObject properties) { String key = "Address:" + serviceName; if (applicationRegister.containsKey(key)) { 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 bc1852daa75de8518ea36d4f82afb16ce0b28d01..9140959f9a7f32bf61425745bf5a5aba174f383a 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 @@ -76,6 +76,7 @@ public class MetadataQueryEsDAO extends EsDAO implements IMetadataQueryDAO { boolQueryBuilder.must().add(timeRangeQueryBuild(startTimestamp, endTimestamp)); boolQueryBuilder.must().add(QueryBuilders.termQuery(ServiceInventory.IS_ADDRESS, BooleanUtils.FALSE)); + boolQueryBuilder.must().add(QueryBuilders.termQuery(ServiceInventory.NODE_TYPE, NodeType.Normal.value())); sourceBuilder.query(boolQueryBuilder); sourceBuilder.size(0); @@ -118,6 +119,25 @@ public class MetadataQueryEsDAO extends EsDAO implements IMetadataQueryDAO { boolQueryBuilder.must().add(timeRangeQueryBuild(startTimestamp, endTimestamp)); boolQueryBuilder.must().add(QueryBuilders.termQuery(ServiceInventory.IS_ADDRESS, BooleanUtils.FALSE)); + boolQueryBuilder.must().add(QueryBuilders.termQuery(ServiceInventory.NODE_TYPE, NodeType.Normal.value())); + + sourceBuilder.query(boolQueryBuilder); + sourceBuilder.size(queryMaxSize); + + SearchResponse response = getClient().search(ServiceInventory.INDEX_NAME, sourceBuilder); + + return buildServices(response); + } + + @Override + public List getAllBrowserServices(long startTimestamp, long endTimestamp) throws IOException { + SearchSourceBuilder sourceBuilder = SearchSourceBuilder.searchSource(); + + BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); + boolQueryBuilder.must().add(timeRangeQueryBuild(startTimestamp, endTimestamp)); + + boolQueryBuilder.must().add(QueryBuilders.termQuery(ServiceInventory.IS_ADDRESS, BooleanUtils.FALSE)); + boolQueryBuilder.must().add(QueryBuilders.termQuery(ServiceInventory.NODE_TYPE, NodeType.Browser.value())); sourceBuilder.query(boolQueryBuilder); sourceBuilder.size(queryMaxSize); @@ -166,6 +186,7 @@ public class MetadataQueryEsDAO extends EsDAO implements IMetadataQueryDAO { BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); boolQueryBuilder.must().add(timeRangeQueryBuild(startTimestamp, endTimestamp)); boolQueryBuilder.must().add(QueryBuilders.termQuery(ServiceInventory.IS_ADDRESS, BooleanUtils.FALSE)); + boolQueryBuilder.must().add(QueryBuilders.termQuery(ServiceInventory.NODE_TYPE, NodeType.Normal.value())); if (!Strings.isNullOrEmpty(keyword)) { String matchCName = MatchCNameBuilder.INSTANCE.build(ServiceInventory.NAME); 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 03951d9840255ef45d011b5b23a657c82a140ee4..01102fcb0331609364ab590133ac7b09a0d03953 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,7 +18,9 @@ package org.apache.skywalking.oap.server.storage.plugin.elasticsearch7.query; +import java.io.IOException; import org.apache.skywalking.oap.server.core.register.EndpointInventory; +import org.apache.skywalking.oap.server.core.register.NodeType; import org.apache.skywalking.oap.server.core.register.ServiceInventory; import org.apache.skywalking.oap.server.core.source.DetectPoint; import org.apache.skywalking.oap.server.library.client.elasticsearch.ElasticSearchClient; @@ -29,8 +31,6 @@ import org.elasticsearch.index.query.BoolQueryBuilder; import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.search.builder.SearchSourceBuilder; -import java.io.IOException; - /** * @author peng-yongsheng */ @@ -48,12 +48,13 @@ public class MetadataQueryEs7DAO extends MetadataQueryEsDAO { boolQueryBuilder.must().add(timeRangeQueryBuild(startTimestamp, endTimestamp)); boolQueryBuilder.must().add(QueryBuilders.termQuery(ServiceInventory.IS_ADDRESS, BooleanUtils.FALSE)); + boolQueryBuilder.must().add(QueryBuilders.termQuery(ServiceInventory.NODE_TYPE, NodeType.Normal.value())); sourceBuilder.query(boolQueryBuilder); sourceBuilder.size(0); SearchResponse response = getClient().search(ServiceInventory.INDEX_NAME, sourceBuilder); - return (int) response.getHits().getTotalHits().value; + return (int)response.getHits().getTotalHits().value; } @Override @@ -68,7 +69,7 @@ public class MetadataQueryEs7DAO extends MetadataQueryEsDAO { sourceBuilder.size(0); SearchResponse response = getClient().search(EndpointInventory.INDEX_NAME, sourceBuilder); - return (int) response.getHits().getTotalHits().value; + return (int)response.getHits().getTotalHits().value; } @Override @@ -80,7 +81,7 @@ public class MetadataQueryEs7DAO extends MetadataQueryEsDAO { SearchResponse response = getClient().search(ServiceInventory.INDEX_NAME, sourceBuilder); - return (int) response.getHits().getTotalHits().value; + 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 e8d38e4bc0b84b5c9287678f1543afe9f64608b7..739914281d61c017e5d541b4996b87797a2e7dc6 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 @@ -71,7 +71,8 @@ public class H2MetadataQueryDAO implements IMetadataQueryDAO { List condition = new ArrayList<>(5); sql.append("select count(*) num from ").append(ServiceInventory.INDEX_NAME).append(" where "); setTimeRangeCondition(sql, condition, startTimestamp, endTimestamp); - sql.append(" and ").append(ServiceInventory.IS_ADDRESS).append("=0"); + sql.append(" and ").append(ServiceInventory.IS_ADDRESS).append("=" + BooleanUtils.FALSE); + sql.append(" and ").append(ServiceInventory.NODE_TYPE).append("=" + NodeType.Normal.value()); try (Connection connection = h2Client.getConnection()) { try (ResultSet resultSet = h2Client.executeQuery(connection, sql.toString(), condition.toArray(new Object[0]))) { @@ -131,8 +132,32 @@ public class H2MetadataQueryDAO implements IMetadataQueryDAO { List condition = new ArrayList<>(5); sql.append("select * from ").append(ServiceInventory.INDEX_NAME).append(" where "); setTimeRangeCondition(sql, condition, startTimestamp, endTimestamp); - sql.append(" and ").append(ServiceInventory.IS_ADDRESS).append("=? limit ").append(metadataQueryMaxSize); + sql.append(" and ").append(ServiceInventory.IS_ADDRESS).append("=?"); + condition.add(BooleanUtils.FALSE); + sql.append(" and ").append(ServiceInventory.NODE_TYPE).append("=?"); + condition.add(NodeType.Normal.value()); + sql.append(" limit ").append(metadataQueryMaxSize); + + try (Connection connection = h2Client.getConnection()) { + try (ResultSet resultSet = h2Client.executeQuery(connection, sql.toString(), condition.toArray(new Object[0]))) { + return buildServices(resultSet); + } + } catch (SQLException e) { + throw new IOException(e); + } + } + + @Override + public List getAllBrowserServices(long startTimestamp, long endTimestamp) throws IOException { + StringBuilder sql = new StringBuilder(); + List condition = new ArrayList<>(5); + sql.append("select * from ").append(ServiceInventory.INDEX_NAME).append(" where "); + setTimeRangeCondition(sql, condition, startTimestamp, endTimestamp); + sql.append(" and ").append(ServiceInventory.IS_ADDRESS).append("=?"); condition.add(BooleanUtils.FALSE); + sql.append(" and ").append(ServiceInventory.NODE_TYPE).append("=?"); + condition.add(NodeType.Browser.value()); + sql.append(" limit ").append(metadataQueryMaxSize); try (Connection connection = h2Client.getConnection()) { try (ResultSet resultSet = h2Client.executeQuery(connection, sql.toString(), condition.toArray(new Object[0]))) { @@ -185,6 +210,8 @@ public class H2MetadataQueryDAO implements IMetadataQueryDAO { setTimeRangeCondition(sql, condition, startTimestamp, endTimestamp); sql.append(" and ").append(ServiceInventory.IS_ADDRESS).append("=?"); condition.add(BooleanUtils.FALSE); + sql.append(" and ").append(ServiceInventory.NODE_TYPE).append("=?"); + condition.add(NodeType.Normal.value()); if (!Strings.isNullOrEmpty(keyword)) { sql.append(" and ").append(ServiceInventory.NAME).append(" like \"%").append(keyword).append("%\""); }