diff --git a/oap-server/server-storage-plugin/storage-influxdb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/influxdb/query/InfluxMetadataQueryDAO.java b/oap-server/server-storage-plugin/storage-influxdb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/influxdb/query/InfluxMetadataQueryDAO.java index 94611a6801777f18732af34cf24e8dca44f96069..05cb63efff4b11e561ee88c7095fabd0e2c0bcfb 100644 --- a/oap-server/server-storage-plugin/storage-influxdb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/influxdb/query/InfluxMetadataQueryDAO.java +++ b/oap-server/server-storage-plugin/storage-influxdb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/influxdb/query/InfluxMetadataQueryDAO.java @@ -46,6 +46,8 @@ import static org.influxdb.querybuilder.BuiltQuery.QueryBuilder.select; */ public class InfluxMetadataQueryDAO extends H2MetadataQueryDAO { private InfluxClient client; + // 'name' is InfluxDB keyword, so escapes it + private static final String ENDPOINT_NAME = '\"' + EndpointTraffic.NAME + '\"'; public InfluxMetadataQueryDAO(final InfluxClient client, final JDBCHikariCPClient h2Client, final int metadataQueryMaxSize) { @@ -75,17 +77,15 @@ public class InfluxMetadataQueryDAO extends H2MetadataQueryDAO { public List searchEndpoint(final String keyword, final int serviceId, final int limit) throws IOException { - final String endpointName = '\"' + EndpointTraffic.NAME + '\"'; - WhereQueryImpl endpointQuery = select() .column(EndpointTraffic.SERVICE_ID) - .column(endpointName) + .column(ENDPOINT_NAME) .column(EndpointTraffic.DETECT_POINT) .from(client.getDatabase(), EndpointTraffic.INDEX_NAME) .where(); endpointQuery.where(eq(MetricsDAO.TAG_ENDPOINT_OWNER_SERVICE, String.valueOf(serviceId))); if (!Strings.isNullOrEmpty(keyword)) { - endpointQuery.where(contains(MetricsDAO.TAG_ENDPOINT_NAME, keyword.replaceAll("/", "////"))); + endpointQuery.where(contains(MetricsDAO.TAG_ENDPOINT_NAME, keyword.replaceAll("/", "\\\\/"))); } endpointQuery.limit(limit); diff --git a/oap-server/server-storage-plugin/storage-influxdb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/influxdb/query/TraceQuery.java b/oap-server/server-storage-plugin/storage-influxdb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/influxdb/query/TraceQuery.java index 1e27fb9fe601530e65e84e7a99965c6ffc7ea23b..2eeae0136c5f2a0f42617534a44dc3a91a1078f0 100644 --- a/oap-server/server-storage-plugin/storage-influxdb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/influxdb/query/TraceQuery.java +++ b/oap-server/server-storage-plugin/storage-influxdb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/influxdb/query/TraceQuery.java @@ -98,7 +98,7 @@ public class TraceQuery implements ITraceQueryDAO { recallQuery.and(lte(SegmentRecord.LATENCY, maxDuration)); } if (!Strings.isNullOrEmpty(endpointName)) { - recallQuery.and(contains(SegmentRecord.ENDPOINT_NAME, endpointName)); + recallQuery.and(contains(SegmentRecord.ENDPOINT_NAME, endpointName.replaceAll("/", "\\\\/"))); } if (serviceId != 0) { recallQuery.and(eq(RecordDAO.TAG_SERVICE_ID, String.valueOf(serviceId)));