未验证 提交 6c20f4a4 编写于 作者: wu-sheng's avatar wu-sheng 提交者: GitHub

Add service type from register and support browser as service type (#4157)

* Add service type from register and support browser as service type

* Add service type at agent side.

* Fix format.

* Fix a test.

* Fix formats.
Co-authored-by: Nkezhenxu94 <kezhenxu94@163.com>
上级 9862fe02
Subproject commit 7b244ff7ec350910295eee85633e02d92a6f6b1c Subproject commit c331e840908905460c0d8df7573fa33ea6764873
...@@ -41,6 +41,7 @@ import org.apache.skywalking.apm.agent.core.os.OSUtil; ...@@ -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.Commands;
import org.apache.skywalking.apm.network.common.KeyIntValuePair; import org.apache.skywalking.apm.network.common.KeyIntValuePair;
import org.apache.skywalking.apm.network.common.KeyStringValuePair; 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.RegisterGrpc;
import org.apache.skywalking.apm.network.register.v2.Service; import org.apache.skywalking.apm.network.register.v2.Service;
import org.apache.skywalking.apm.network.register.v2.ServiceInstance; import org.apache.skywalking.apm.network.register.v2.ServiceInstance;
...@@ -141,7 +142,7 @@ public class ServiceAndEndpointRegisterClient implements BootService, Runnable, ...@@ -141,7 +142,7 @@ public class ServiceAndEndpointRegisterClient implements BootService, Runnable,
if (RemoteDownstreamConfig.Agent.SERVICE_ID == DictionaryUtil.nullValue()) { if (RemoteDownstreamConfig.Agent.SERVICE_ID == DictionaryUtil.nullValue()) {
if (registerBlockingStub != null) { if (registerBlockingStub != null) {
ServiceRegisterMapping serviceRegisterMapping = registerBlockingStub.withDeadlineAfter(GRPC_UPSTREAM_TIMEOUT, TimeUnit.SECONDS).doServiceRegister( 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) { if (serviceRegisterMapping != null) {
for (KeyIntValuePair registered : serviceRegisterMapping.getServicesList()) { for (KeyIntValuePair registered : serviceRegisterMapping.getServicesList()) {
if (Config.Agent.SERVICE_NAME.equals(registered.getKey())) { if (Config.Agent.SERVICE_NAME.equals(registered.getKey())) {
......
...@@ -77,6 +77,10 @@ public class MetadataQueryService implements org.apache.skywalking.oap.server.li ...@@ -77,6 +77,10 @@ public class MetadataQueryService implements org.apache.skywalking.oap.server.li
return getMetadataQueryDAO().getAllServices(startTimestamp, endTimestamp); return getMetadataQueryDAO().getAllServices(startTimestamp, endTimestamp);
} }
public List<Service> getAllBrowserServices(final long startTimestamp, final long endTimestamp) throws IOException {
return getMetadataQueryDAO().getAllBrowserServices(startTimestamp, endTimestamp);
}
public List<Database> getAllDatabases() throws IOException { public List<Database> getAllDatabases() throws IOException {
return getMetadataQueryDAO().getAllDatabases(); return getMetadataQueryDAO().getAllDatabases();
} }
......
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
package org.apache.skywalking.oap.server.core.register; package org.apache.skywalking.oap.server.core.register;
import org.apache.skywalking.apm.network.common.ServiceType;
import org.apache.skywalking.oap.server.core.UnexpectedException; import org.apache.skywalking.oap.server.core.UnexpectedException;
/** /**
...@@ -32,7 +33,7 @@ public enum NodeType { ...@@ -32,7 +33,7 @@ public enum NodeType {
/** /**
* <code>Unknown = 0;</code> * <code>Unknown = 0;</code>
*/ */
Unknown(0), Normal(0),
/** /**
* <code>Database = 1;</code> * <code>Database = 1;</code>
*/ */
...@@ -53,6 +54,10 @@ public enum NodeType { ...@@ -53,6 +54,10 @@ public enum NodeType {
* <code>Cache = 5;</code> * <code>Cache = 5;</code>
*/ */
Cache(5), Cache(5),
/**
* <code>Browser = 6;</code>
*/
Browser(6),
UNRECOGNIZED(-1); UNRECOGNIZED(-1);
private final int value; private final int value;
...@@ -68,7 +73,7 @@ public enum NodeType { ...@@ -68,7 +73,7 @@ public enum NodeType {
public static NodeType get(int value) { public static NodeType get(int value) {
switch (value) { switch (value) {
case 0: case 0:
return Unknown; return Normal;
case 1: case 1:
return Database; return Database;
case 2: case 2:
...@@ -95,4 +100,21 @@ public enum NodeType { ...@@ -95,4 +100,21 @@ public enum NodeType {
public static NodeType fromSpanLayerValue(int spanLayerValue) { public static NodeType fromSpanLayerValue(int spanLayerValue) {
return get(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;
}
}
} }
...@@ -58,7 +58,10 @@ public class ServiceInventory extends RegisterSource { ...@@ -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 = NAME, matchQuery = true) private String name = Const.EMPTY_STRING;
@Setter @Getter @Column(columnName = IS_ADDRESS) private int isAddress; @Setter @Getter @Column(columnName = IS_ADDRESS) private int isAddress;
@Setter @Getter @Column(columnName = ADDRESS_ID) private int addressId; @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; @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(AccessLevel.PRIVATE) @Column(columnName = PROPERTIES) private String prop = Const.EMPTY_JSON_OBJECT_STRING;
@Getter private JsonObject properties; @Getter private JsonObject properties;
......
...@@ -29,6 +29,8 @@ public interface IServiceInventoryRegister extends Service { ...@@ -29,6 +29,8 @@ public interface IServiceInventoryRegister extends Service {
int getOrCreate(String serviceName, JsonObject properties); int getOrCreate(String serviceName, JsonObject properties);
int getOrCreate(String serviceName, NodeType nodeType, JsonObject properties);
int getOrCreate(int addressId, String serviceName, JsonObject properties); int getOrCreate(int addressId, String serviceName, JsonObject properties);
void update(int serviceId, NodeType nodeType, JsonObject properties); void update(int serviceId, NodeType nodeType, JsonObject properties);
......
...@@ -55,7 +55,7 @@ public class ServiceInventoryRegister implements IServiceInventoryRegister { ...@@ -55,7 +55,7 @@ public class ServiceInventoryRegister implements IServiceInventoryRegister {
return serviceInventoryCache; 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); int serviceId = getServiceInventoryCache().getServiceId(serviceName);
if (serviceId == Const.NONE) { if (serviceId == Const.NONE) {
...@@ -67,6 +67,7 @@ public class ServiceInventoryRegister implements IServiceInventoryRegister { ...@@ -67,6 +67,7 @@ public class ServiceInventoryRegister implements IServiceInventoryRegister {
long now = System.currentTimeMillis(); long now = System.currentTimeMillis();
serviceInventory.setRegisterTime(now); serviceInventory.setRegisterTime(now);
serviceInventory.setHeartbeatTime(now); serviceInventory.setHeartbeatTime(now);
serviceInventory.setServiceNodeType(nodeType);
serviceInventory.setMappingServiceId(Const.NONE); serviceInventory.setMappingServiceId(Const.NONE);
serviceInventory.setLastUpdateTime(now); serviceInventory.setLastUpdateTime(now);
serviceInventory.setProperties(properties); serviceInventory.setProperties(properties);
...@@ -76,6 +77,10 @@ public class ServiceInventoryRegister implements IServiceInventoryRegister { ...@@ -76,6 +77,10 @@ public class ServiceInventoryRegister implements IServiceInventoryRegister {
return serviceId; 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) { @Override public int getOrCreate(int addressId, String serviceName, JsonObject properties) {
int serviceId = getServiceInventoryCache().getServiceId(addressId); int serviceId = getServiceInventoryCache().getServiceId(addressId);
......
...@@ -36,6 +36,8 @@ public interface IMetadataQueryDAO extends DAO { ...@@ -36,6 +36,8 @@ public interface IMetadataQueryDAO extends DAO {
List<Service> getAllServices(final long startTimestamp, final long endTimestamp) throws IOException; List<Service> getAllServices(final long startTimestamp, final long endTimestamp) throws IOException;
List<Service> getAllBrowserServices(long startTimestamp, long endTimestamp) throws IOException;
List<Database> getAllDatabases() throws IOException; List<Database> getAllDatabases() throws IOException;
List<Service> searchServices(final long startTimestamp, final long endTimestamp, List<Service> searchServices(final long startTimestamp, final long endTimestamp,
......
...@@ -64,6 +64,13 @@ public class MetadataQuery implements GraphQLQueryResolver { ...@@ -64,6 +64,13 @@ public class MetadataQuery implements GraphQLQueryResolver {
return getMetadataQueryService().getAllServices(startTimestamp, endTimestamp); return getMetadataQueryService().getAllServices(startTimestamp, endTimestamp);
} }
public List<Service> 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<Service> searchServices(final Duration duration, final String keyword) public List<Service> searchServices(final Duration duration, final String keyword)
throws IOException, ParseException { throws IOException, ParseException {
long startTimestamp = DurationUtils.INSTANCE.startTimeToTimestamp(duration.getStep(), duration.getStart()); long startTimestamp = DurationUtils.INSTANCE.startTimeToTimestamp(duration.getStep(), duration.getStart());
......
Subproject commit a52c7a957f02a37b9409b52fc55db774f20291bf Subproject commit a9b48130626e4b4dcf46bb8268c7125cc6f50814
...@@ -25,6 +25,7 @@ import java.util.List; ...@@ -25,6 +25,7 @@ import java.util.List;
import org.apache.skywalking.apm.network.common.Commands; import org.apache.skywalking.apm.network.common.Commands;
import org.apache.skywalking.apm.network.common.KeyIntValuePair; import org.apache.skywalking.apm.network.common.KeyIntValuePair;
import org.apache.skywalking.apm.network.common.KeyStringValuePair; 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.EndpointMapping;
import org.apache.skywalking.apm.network.register.v2.EndpointMappingElement; import org.apache.skywalking.apm.network.register.v2.EndpointMappingElement;
import org.apache.skywalking.apm.network.register.v2.Endpoints; import org.apache.skywalking.apm.network.register.v2.Endpoints;
...@@ -41,6 +42,7 @@ import org.apache.skywalking.oap.server.core.Const; ...@@ -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.CoreModule;
import org.apache.skywalking.oap.server.core.cache.ServiceInstanceInventoryCache; 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.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.ServiceInstanceInventory;
import org.apache.skywalking.oap.server.core.register.ServiceInventory; import org.apache.skywalking.oap.server.core.register.ServiceInventory;
import org.apache.skywalking.oap.server.core.register.service.IEndpointInventoryRegister; import org.apache.skywalking.oap.server.core.register.service.IEndpointInventoryRegister;
...@@ -90,7 +92,14 @@ public class RegisterServiceHandler extends RegisterGrpc.RegisterImplBase implem ...@@ -90,7 +92,14 @@ public class RegisterServiceHandler extends RegisterGrpc.RegisterImplBase implem
if (logger.isDebugEnabled()) { if (logger.isDebugEnabled()) {
logger.debug("Register service, service code: {}", serviceName); 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) { if (serviceId != Const.NONE) {
KeyIntValuePair value = KeyIntValuePair.newBuilder().setKey(serviceName).setValue(serviceId).build(); KeyIntValuePair value = KeyIntValuePair.newBuilder().setKey(serviceName).setValue(serviceId).build();
......
...@@ -56,6 +56,10 @@ public class SpringSleuthSegmentBuilderTest implements SegmentListener { ...@@ -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) { @Override public int getOrCreate(int addressId, String serviceName, JsonObject properties) {
String key = "Address:" + serviceName; String key = "Address:" + serviceName;
if (applicationRegister.containsKey(key)) { if (applicationRegister.containsKey(key)) {
......
...@@ -76,6 +76,7 @@ public class MetadataQueryEsDAO extends EsDAO implements IMetadataQueryDAO { ...@@ -76,6 +76,7 @@ public class MetadataQueryEsDAO extends EsDAO implements IMetadataQueryDAO {
boolQueryBuilder.must().add(timeRangeQueryBuild(startTimestamp, endTimestamp)); boolQueryBuilder.must().add(timeRangeQueryBuild(startTimestamp, endTimestamp));
boolQueryBuilder.must().add(QueryBuilders.termQuery(ServiceInventory.IS_ADDRESS, BooleanUtils.FALSE)); 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.query(boolQueryBuilder);
sourceBuilder.size(0); sourceBuilder.size(0);
...@@ -118,6 +119,25 @@ public class MetadataQueryEsDAO extends EsDAO implements IMetadataQueryDAO { ...@@ -118,6 +119,25 @@ public class MetadataQueryEsDAO extends EsDAO implements IMetadataQueryDAO {
boolQueryBuilder.must().add(timeRangeQueryBuild(startTimestamp, endTimestamp)); boolQueryBuilder.must().add(timeRangeQueryBuild(startTimestamp, endTimestamp));
boolQueryBuilder.must().add(QueryBuilders.termQuery(ServiceInventory.IS_ADDRESS, BooleanUtils.FALSE)); 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<Service> 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.query(boolQueryBuilder);
sourceBuilder.size(queryMaxSize); sourceBuilder.size(queryMaxSize);
...@@ -166,6 +186,7 @@ public class MetadataQueryEsDAO extends EsDAO implements IMetadataQueryDAO { ...@@ -166,6 +186,7 @@ public class MetadataQueryEsDAO extends EsDAO implements IMetadataQueryDAO {
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
boolQueryBuilder.must().add(timeRangeQueryBuild(startTimestamp, endTimestamp)); boolQueryBuilder.must().add(timeRangeQueryBuild(startTimestamp, endTimestamp));
boolQueryBuilder.must().add(QueryBuilders.termQuery(ServiceInventory.IS_ADDRESS, BooleanUtils.FALSE)); 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)) { if (!Strings.isNullOrEmpty(keyword)) {
String matchCName = MatchCNameBuilder.INSTANCE.build(ServiceInventory.NAME); String matchCName = MatchCNameBuilder.INSTANCE.build(ServiceInventory.NAME);
......
...@@ -18,7 +18,9 @@ ...@@ -18,7 +18,9 @@
package org.apache.skywalking.oap.server.storage.plugin.elasticsearch7.query; 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.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.register.ServiceInventory;
import org.apache.skywalking.oap.server.core.source.DetectPoint; import org.apache.skywalking.oap.server.core.source.DetectPoint;
import org.apache.skywalking.oap.server.library.client.elasticsearch.ElasticSearchClient; import org.apache.skywalking.oap.server.library.client.elasticsearch.ElasticSearchClient;
...@@ -29,8 +31,6 @@ import org.elasticsearch.index.query.BoolQueryBuilder; ...@@ -29,8 +31,6 @@ import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.builder.SearchSourceBuilder; import org.elasticsearch.search.builder.SearchSourceBuilder;
import java.io.IOException;
/** /**
* @author peng-yongsheng * @author peng-yongsheng
*/ */
...@@ -48,12 +48,13 @@ public class MetadataQueryEs7DAO extends MetadataQueryEsDAO { ...@@ -48,12 +48,13 @@ public class MetadataQueryEs7DAO extends MetadataQueryEsDAO {
boolQueryBuilder.must().add(timeRangeQueryBuild(startTimestamp, endTimestamp)); boolQueryBuilder.must().add(timeRangeQueryBuild(startTimestamp, endTimestamp));
boolQueryBuilder.must().add(QueryBuilders.termQuery(ServiceInventory.IS_ADDRESS, BooleanUtils.FALSE)); 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.query(boolQueryBuilder);
sourceBuilder.size(0); sourceBuilder.size(0);
SearchResponse response = getClient().search(ServiceInventory.INDEX_NAME, sourceBuilder); SearchResponse response = getClient().search(ServiceInventory.INDEX_NAME, sourceBuilder);
return (int) response.getHits().getTotalHits().value; return (int)response.getHits().getTotalHits().value;
} }
@Override @Override
...@@ -68,7 +69,7 @@ public class MetadataQueryEs7DAO extends MetadataQueryEsDAO { ...@@ -68,7 +69,7 @@ public class MetadataQueryEs7DAO extends MetadataQueryEsDAO {
sourceBuilder.size(0); sourceBuilder.size(0);
SearchResponse response = getClient().search(EndpointInventory.INDEX_NAME, sourceBuilder); SearchResponse response = getClient().search(EndpointInventory.INDEX_NAME, sourceBuilder);
return (int) response.getHits().getTotalHits().value; return (int)response.getHits().getTotalHits().value;
} }
@Override @Override
...@@ -80,7 +81,7 @@ public class MetadataQueryEs7DAO extends MetadataQueryEsDAO { ...@@ -80,7 +81,7 @@ public class MetadataQueryEs7DAO extends MetadataQueryEsDAO {
SearchResponse response = getClient().search(ServiceInventory.INDEX_NAME, sourceBuilder); SearchResponse response = getClient().search(ServiceInventory.INDEX_NAME, sourceBuilder);
return (int) response.getHits().getTotalHits().value; return (int)response.getHits().getTotalHits().value;
} }
} }
...@@ -71,7 +71,8 @@ public class H2MetadataQueryDAO implements IMetadataQueryDAO { ...@@ -71,7 +71,8 @@ public class H2MetadataQueryDAO implements IMetadataQueryDAO {
List<Object> condition = new ArrayList<>(5); List<Object> condition = new ArrayList<>(5);
sql.append("select count(*) num from ").append(ServiceInventory.INDEX_NAME).append(" where "); sql.append("select count(*) num from ").append(ServiceInventory.INDEX_NAME).append(" where ");
setTimeRangeCondition(sql, condition, startTimestamp, endTimestamp); 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 (Connection connection = h2Client.getConnection()) {
try (ResultSet resultSet = h2Client.executeQuery(connection, sql.toString(), condition.toArray(new Object[0]))) { try (ResultSet resultSet = h2Client.executeQuery(connection, sql.toString(), condition.toArray(new Object[0]))) {
...@@ -131,8 +132,32 @@ public class H2MetadataQueryDAO implements IMetadataQueryDAO { ...@@ -131,8 +132,32 @@ public class H2MetadataQueryDAO implements IMetadataQueryDAO {
List<Object> condition = new ArrayList<>(5); List<Object> condition = new ArrayList<>(5);
sql.append("select * from ").append(ServiceInventory.INDEX_NAME).append(" where "); sql.append("select * from ").append(ServiceInventory.INDEX_NAME).append(" where ");
setTimeRangeCondition(sql, condition, startTimestamp, endTimestamp); 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<Service> getAllBrowserServices(long startTimestamp, long endTimestamp) throws IOException {
StringBuilder sql = new StringBuilder();
List<Object> 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); 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 (Connection connection = h2Client.getConnection()) {
try (ResultSet resultSet = h2Client.executeQuery(connection, sql.toString(), condition.toArray(new Object[0]))) { try (ResultSet resultSet = h2Client.executeQuery(connection, sql.toString(), condition.toArray(new Object[0]))) {
...@@ -185,6 +210,8 @@ public class H2MetadataQueryDAO implements IMetadataQueryDAO { ...@@ -185,6 +210,8 @@ public class H2MetadataQueryDAO implements IMetadataQueryDAO {
setTimeRangeCondition(sql, condition, startTimestamp, endTimestamp); setTimeRangeCondition(sql, condition, startTimestamp, endTimestamp);
sql.append(" and ").append(ServiceInventory.IS_ADDRESS).append("=?"); sql.append(" and ").append(ServiceInventory.IS_ADDRESS).append("=?");
condition.add(BooleanUtils.FALSE); condition.add(BooleanUtils.FALSE);
sql.append(" and ").append(ServiceInventory.NODE_TYPE).append("=?");
condition.add(NodeType.Normal.value());
if (!Strings.isNullOrEmpty(keyword)) { if (!Strings.isNullOrEmpty(keyword)) {
sql.append(" and ").append(ServiceInventory.NAME).append(" like \"%").append(keyword).append("%\""); sql.append(" and ").append(ServiceInventory.NAME).append(" like \"%").append(keyword).append("%\"");
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册