From 03b03518616a91129cfced2972621df3f0bac3db Mon Sep 17 00:00:00 2001 From: Wan Kai Date: Fri, 25 Apr 2025 17:24:02 +0800 Subject: [PATCH] BanyanDB: Support cold stage data query for metrics/traces/logs (#13211) --- docs/en/api/query-protocol.md | 8 + docs/en/changes/changes.md | 3 +- docs/en/debugging/query-tracing.md | 167 ++++++++++-------- .../trace/ProfileTaskQueryService.java | 6 +- .../server/core/query/TraceQueryService.java | 14 +- .../oap/server/core/query/input/Duration.java | 1 + .../query/ISpanAttachedEventQueryDAO.java | 14 +- .../core/storage/query/ITraceQueryDAO.java | 29 ++- .../core/storage/query/IZipkinQueryDAO.java | 21 ++- .../graphql/resolver/MetadataQueryV2.java | 21 +++ .../query/graphql/resolver/TraceQuery.java | 23 ++- .../src/main/resources/query-protocol | 2 +- .../oap/query/debug/DebuggingHTTPHandler.java | 37 +++- .../zipkin/handler/ZipkinQueryHandler.java | 8 +- .../banyandb/BanyanDBAggregationQueryDAO.java | 17 +- .../banyandb/BanyanDBIndexInstaller.java | 4 +- .../banyandb/BanyanDBRecordsQueryDAO.java | 7 +- .../banyandb/BanyanDBZipkinQueryDAO.java | 22 ++- ...BanyanDBEBPFProfilingScheduleQueryDAO.java | 2 +- .../measure/BanyanDBEventQueryDAO.java | 28 +-- .../measure/BanyanDBHierarchyQueryDAO.java | 4 +- .../measure/BanyanDBMetadataQueryDAO.java | 22 +-- .../banyandb/measure/BanyanDBMetricsDAO.java | 2 +- .../measure/BanyanDBMetricsQueryDAO.java | 21 +-- .../BanyanDBNetworkAddressAliasDAO.java | 1 + .../measure/BanyanDBServiceLabelDAO.java | 2 +- .../BanyanDBTagAutocompleteQueryDAO.java | 18 +- .../measure/BanyanDBTopologyQueryDAO.java | 64 ++----- .../banyandb/stream/AbstractBanyanDBDAO.java | 77 ++++++-- .../stream/BanyanDBAlarmQueryDAO.java | 14 +- .../BanyanDBAsyncProfilerTaskLogQueryDAO.java | 2 +- .../BanyanDBAsyncProfilerTaskQueryDAO.java | 4 +- .../stream/BanyanDBBrowserLogQueryDAO.java | 15 +- .../stream/BanyanDBEBPFProfilingDataDAO.java | 2 +- .../stream/BanyanDBEBPFProfilingTaskDAO.java | 6 +- .../stream/BanyanDBJFRDataQueryDAO.java | 2 +- .../banyandb/stream/BanyanDBLogQueryDAO.java | 19 +- .../BanyanDBProfileTaskLogQueryDAO.java | 2 +- .../stream/BanyanDBProfileTaskQueryDAO.java | 4 +- ...BanyanDBProfileThreadSnapshotQueryDAO.java | 6 +- .../BanyanDBSpanAttachedEventQueryDAO.java | 9 +- .../stream/BanyanDBTraceQueryDAO.java | 41 ++--- .../query/SpanAttachedEventEsDAO.java | 4 +- .../elasticsearch/query/TraceQueryEsDAO.java | 7 +- .../query/zipkin/ZipkinQueryEsDAO.java | 7 +- .../dao/JDBCSpanAttachedEventQueryDAO.java | 4 +- .../jdbc/common/dao/JDBCTraceQueryDAO.java | 7 +- .../jdbc/common/dao/JDBCZipkinQueryDAO.java | 7 +- .../profile/exporter/ProfiledBasicInfo.java | 2 +- .../exporter/test/ProfileTraceDAO.java | 7 +- .../test/SpanAttachedEventQueryDAO.java | 6 +- test/e2e-v2/script/env | 2 +- 52 files changed, 465 insertions(+), 359 deletions(-) diff --git a/docs/en/api/query-protocol.md b/docs/en/api/query-protocol.md index 00edb39179..3ca351a58f 100644 --- a/docs/en/api/query-protocol.md +++ b/docs/en/api/query-protocol.md @@ -48,6 +48,10 @@ extend type Query { estimateProcessScale(serviceId: ID!, labels: [String!]!): Long! getTimeInfo: TimeInfo + # Get the TTL info of records + getRecordsTTL: RecordsTTL + # Get the TTL info of metrics + getMetricsTTL: MetricsTTL } ``` @@ -156,6 +160,8 @@ extend type Query { queryBasicTraces(condition: TraceQueryCondition, debug: Boolean): TraceBrief # Read the specific trace ID with given trace ID queryTrace(traceId: ID!, debug: Boolean): Trace + # Only for BanyanDB, can be used to query the trace in the cold stage. + queryTraceFromColdStage(traceId: ID!, duration: Duration!, debug: Boolean): Trace # Read the list of searchable keys queryTraceTagAutocompleteKeys(duration: Duration!):[String!] # Search the available value options of the given key. @@ -305,6 +311,8 @@ input Duration { start: String! end: String! step: Step! + # Only for BanyanDB, the flag to query from cold stage, default is false. + coldStage: Boolean } enum Step { diff --git a/docs/en/changes/changes.md b/docs/en/changes/changes.md index 26d23d7046..baf6d20d4b 100644 --- a/docs/en/changes/changes.md +++ b/docs/en/changes/changes.md @@ -8,11 +8,12 @@ * BanyanDB: Support `hot/warm/cold` stages configuration. * Fix query continues profiling policies error when the policy is already in the cache. -* Support `hot/warm/cold` stages TTL query in the status API. +* Support `hot/warm/cold` stages TTL query in the status API and graphQL API. * PromQL Service: traffic query support `limit` and regex match. * Fix an edge case of HashCodeSelector(Integer#MIN_VALUE causes ArrayIndexOutOfBoundsException). * Support Flink monitoring. * BanyanDB: Support `@ShardingKey` for Measure tags and set to TopNAggregation group tag by default. +* BanyanDB: Support cold stage data query for metrics/traces/logs. #### UI diff --git a/docs/en/debugging/query-tracing.md b/docs/en/debugging/query-tracing.md index 300e9fb674..cd824e9242 100644 --- a/docs/en/debugging/query-tracing.md +++ b/docs/en/debugging/query-tracing.md @@ -41,7 +41,8 @@ which could be accessed through HTTP GET `http://{core restHost}:{core restPort} | expression | The MQE query expression | Yes | | startTime | The start time of the query | Yes | | endTime | The end time of the query | Yes | -| step | The query step | Yes | +| step | The query step | Yes | +| coldStage | Only for BanyanDB, the flag to query from cold stage, default is false. | No | | service | The service name | Yes | | serviceLayer | The service layer name | Yes | | serviceInstance | The service instance name | No | @@ -182,22 +183,23 @@ childSpans: - URL: HTTP GET `http://{core restHost}:{core restPort}/debugging/query/queryBasicTraces?{parameters}`. - Parameters - | Field | Description | Required | - |-------------------|---------------------------------------------------------------|--------------------| - | startTime | The start time of the query | Yes | - | endTime | The end time of the query | Yes | - | step | The query step | Yes | - | service | The service name | Yes | - | serviceLayer | The service layer name | Yes | - | serviceInstance | The service instance name | No | - | endpoint | The endpoint name | No | - | minTraceDuration | The minimum duration of the trace | No | - | maxTraceDuration | The maximum duration of the trace | No | - | traceState | The state of the trace, `ALL`, `SUCCESS`, `ERROR` | Yes | - | queryOrder | The order of the query result, `BY_START_TIME`, `BY_DURATION` | Yes | - | tags | The tags of the trace, `key1=value1,key2=value2` | No | - | pageNum | The page number of the query result | Yes | - | pageSize | The page size of the query result | Yes | + | Field | Description | Required | + |--------------------|---------------------------------------------------------------------------|----------| + | startTime | The start time of the query | Yes | + | endTime | The end time of the query | Yes | + | step | The query step | Yes | + | coldStage | Only for BanyanDB, the flag to query from cold stage, default is false. | No | + | service | The service name | Yes | + | serviceLayer | The service layer name | Yes | + | serviceInstance | The service instance name | No | + | endpoint | The endpoint name | No | + | minTraceDuration | The minimum duration of the trace | No | + | maxTraceDuration | The maximum duration of the trace | No | + | traceState | The state of the trace, `ALL`, `SUCCESS`, `ERROR` | Yes | + | queryOrder | The order of the query result, `BY_START_TIME`, `BY_DURATION` | Yes | + | tags | The tags of the trace, `key1=value1,key2=value2` | No | + | pageNum | The page number of the query result | Yes | + | pageSize | The page size of the query result | Yes | The time and step parameters are follow the [Duration](../api/query-protocol.md#duration) format. @@ -236,6 +238,19 @@ debuggingTrace: ... ``` +#### Tracing SkyWalking API queryTraceFromColdStage +Only for BanyanDB, can be used to query the trace in the cold stage. + +- URL: HTTP GET `http://{core restHost}:{core restPort}/debugging/query/trace/queryTraceFromColdStage?{parameters}`. +- Parameters + + | Field | Description | Required | + |-----------------|----------------------------------|-----------------| + | traceId | The ID of the trace | Yes | + | startTime | The start time of the query | Yes | + | endTime | The end time of the query | Yes | + | step | The query step | Yes | + ### Tracing Zipkin Trace Query #### Tracing Zipkin API /api/v2/traces @@ -299,12 +314,13 @@ debuggingTrace: - URL: HTTP GET `http://{core restHost}:{core restPort}/debugging/query/topology/getGlobalTopology?{parameters}`. - Parameters - | Field | Description | Required | - |-------------------|---------------------------------------------------------------|----------| - | startTime | The start time of the query | Yes | - | endTime | The end time of the query | Yes | - | step | The query step | Yes | - | serviceLayer | The service layer name | No | + | Field | Description | Required | + |---------------|-------------------------------------------------------------------------|----------| + | startTime | The start time of the query | Yes | + | endTime | The end time of the query | Yes | + | step | The query step | Yes | + | coldStage | Only for BanyanDB, the flag to query from cold stage, default is false. | No | + | serviceLayer | The service layer name | No | - Example ```shell @@ -326,13 +342,14 @@ debuggingTrace: - URL: HTTP GET `http://{core restHost}:{core restPort}/debugging/query/topology/getServicesTopology?{parameters}`. - Parameters - | Field | Description | Required | - |--------------|-----------------------------------------------------------------------------|----------| - | startTime | The start time of the query | Yes | - | endTime | The end time of the query | Yes | - | step | The query step | Yes | - | serviceLayer | The service layer name | Yes | - | services | The services names list, separate by comma `mock_a_service, mock_b_service` | Yes | + | Field | Description | Required | + |---------------|-----------------------------------------------------------------------------|----------| + | startTime | The start time of the query | Yes | + | endTime | The end time of the query | Yes | + | step | The query step | Yes | + | coldStage | Only for BanyanDB, the flag to query from cold stage, default is false. | No | + | serviceLayer | The service layer name | Yes | + | services | The services names list, separate by comma `mock_a_service, mock_b_service` | Yes | - Example ```shell @@ -354,15 +371,16 @@ debuggingTrace: - URL: HTTP GET `http://{core restHost}:{core restPort}/debugging/query/topology/getServiceInstanceTopology?{parameters}`. - Parameters - | Field | Description | Required | - |--------------------|------------------------------------|----------| - | startTime | The start time of the query | Yes | - | endTime | The end time of the query | Yes | - | step | The query step | Yes | - | clientService | The client side service name | Yes | - | serverService | The server side service name | Yes | - | clientServiceLayer | The client side service layer name | Yes | - | serverServiceLayer | The server side service layer name | Yes | + | Field | Description | Required | + |--------------------|-------------------------------------------------------------------------|----------| + | startTime | The start time of the query | Yes | + | endTime | The end time of the query | Yes | + | step | The query step | Yes | + | coldStage | Only for BanyanDB, the flag to query from cold stage, default is false. | No | + | clientService | The client side service name | Yes | + | serverService | The server side service name | Yes | + | clientServiceLayer | The client side service layer name | Yes | + | serverServiceLayer | The server side service layer name | Yes | - Example ```shell @@ -384,14 +402,15 @@ debuggingTrace: - URL: HTTP GET `http://{core restHost}:{core restPort}/debugging/query/topology/getEndpointDependencies?{parameters}`. - Parameters - | Field | Description | Required | - |--------------|-----------------------------------------------------------------------------|----------| - | startTime | The start time of the query | Yes | - | endTime | The end time of the query | Yes | - | step | The query step | Yes | - | service | The service name | Yes | - | serviceLayer | The service layer name | Yes | - | endpoint | The endpoint name | Yes | + | Field | Description | Required | + |----------------|-------------------------------------------------------------------------|----------| + | startTime | The start time of the query | Yes | + | endTime | The end time of the query | Yes | + | step | The query step | Yes | + | coldStage | Only for BanyanDB, the flag to query from cold stage, default is false. | No | + | service | The service name | Yes | + | serviceLayer | The service layer name | Yes | + | endpoint | The endpoint name | Yes | - Example - Example @@ -414,14 +433,15 @@ debuggingTrace: - URL: HTTP GET `http://{core restHost}:{core restPort}/debugging/query/topology/getProcessTopology?{parameters}`. - Parameters - | Field | Description | Required | - |---------------|-----------------------------------------------------------------------------|----------| - | startTime | The start time of the query | Yes | - | endTime | The end time of the query | Yes | - | step | The query step | Yes | - | service | The service name | Yes | - | serviceLayer | The service layer name | Yes | - | instance | The instance name | Yes | + | Field | Description | Required | + |--------------|-------------------------------------------------------------------------|----------| + | startTime | The start time of the query | Yes | + | endTime | The end time of the query | Yes | + | step | The query step | Yes | + | coldStage | Only for BanyanDB, the flag to query from cold stage, default is false. | No | + | service | The service name | Yes | + | serviceLayer | The service layer name | Yes | + | instance | The instance name | Yes | - Example ```shell @@ -445,24 +465,25 @@ debuggingTrace: URL: HTTP GET `http://{core restHost}:{core restPort}/debugging/query/log/queryLogs?{parameters}`. Parameters - | Field | Description | Required | - |----------------------------|----------------------------------------------------------------|--------------------------------| - | startTime | The start time of the query | Yes, unless traceId not empty | - | endTime | The end time of the query | Yes, unless traceId not empty | - | step | The query step | Yes, unless traceId not empty | - | service | The service name | No, require serviceLayer | - | serviceLayer | The service layer name | No | - | serviceInstance | The service instance name | No, require service | - | endpoint | The endpoint name | No, require service | - | traceId | The trace ID | No | - | segmentId | The segment ID | No, require traceId | - | spanId | The span ID | No, require traceId | - | queryOrder | The order of the query result, `ASC`, `DES` | No, default `DES` | - | tags | The tags of the trace, `key1=value1,key2=value2` | No | - | pageNum | The page number of the query result | Yes | - | pageSize | The page size of the query result | Yes | - | keywordsOfContent | The keywords of the log content, `keyword1,keyword2` | No | - | excludingKeywordsOfContent | The excluding keywords of the log content, `keyword1,keyword2` | No | + | Field | Description | Required | + |----------------------------|-------------------------------------------------------------------------|-------------------------------| + | startTime | The start time of the query | Yes, unless traceId not empty | + | endTime | The end time of the query | Yes, unless traceId not empty | + | step | The query step | Yes, unless traceId not empty | + | coldStage | Only for BanyanDB, the flag to query from cold stage, default is false. | No | + | service | The service name | No, require serviceLayer | + | serviceLayer | The service layer name | No | + | serviceInstance | The service instance name | No, require service | + | endpoint | The endpoint name | No, require service | + | traceId | The trace ID | No | + | segmentId | The segment ID | No, require traceId | + | spanId | The span ID | No, require traceId | + | queryOrder | The order of the query result, `ASC`, `DES` | No, default `DES` | + | tags | The tags of the trace, `key1=value1,key2=value2` | No | + | pageNum | The page number of the query result | Yes | + | pageSize | The page size of the query result | Yes | + | keywordsOfContent | The keywords of the log content, `keyword1,keyword2` | No | + | excludingKeywordsOfContent | The excluding keywords of the log content, `keyword1,keyword2` | No | - Example ```shell diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/trace/ProfileTaskQueryService.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/trace/ProfileTaskQueryService.java index df8065a07b..c12e89c43b 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/trace/ProfileTaskQueryService.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/trace/ProfileTaskQueryService.java @@ -188,13 +188,13 @@ public class ProfileTaskQueryService implements Service { public List getTaskSegments(String taskId) throws IOException { final List profiledSegmentIdList = getProfileThreadSnapshotQueryDAO().queryProfiledSegmentIdList(taskId); - return getTraceQueryDAO().queryBySegmentIdList(profiledSegmentIdList); + return getTraceQueryDAO().queryBySegmentIdList(profiledSegmentIdList, null); } public List getProfileTaskSegments(String taskId) throws IOException { // query all profiled segments final List profiledSegmentIdList = getProfileThreadSnapshotQueryDAO().queryProfiledSegmentIdList(taskId); - final List segmentRecords = getTraceQueryDAO().queryBySegmentIdList(profiledSegmentIdList); + final List segmentRecords = getTraceQueryDAO().queryBySegmentIdList(profiledSegmentIdList, null); if (CollectionUtils.isEmpty(segmentRecords)) { return Collections.emptyList(); } @@ -215,7 +215,7 @@ public class ProfileTaskQueryService implements Service { } final List traceRelatedSegments = getTraceQueryDAO().queryByTraceIdWithInstanceId( new ArrayList<>(traceIdList), - new ArrayList<>(instanceIdList)); + new ArrayList<>(instanceIdList), null); // group by the traceId + service instanceId final Map> instanceTraceWithSegments = traceRelatedSegments.stream().filter(s -> { diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/TraceQueryService.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/TraceQueryService.java index b1be54ea19..0aa466a729 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/TraceQueryService.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/TraceQueryService.java @@ -28,6 +28,7 @@ import java.util.List; import java.util.Objects; import com.google.protobuf.InvalidProtocolBufferException; +import javax.annotation.Nullable; import org.apache.commons.lang3.StringUtils; import org.apache.skywalking.apm.network.common.v3.KeyIntValuePair; import org.apache.skywalking.apm.network.common.v3.KeyStringValuePair; @@ -142,7 +143,10 @@ public class TraceQueryService implements Service { } } - public Trace queryTrace(final String traceId) throws IOException { + /** + * @param duration nullable unless for BanyanDB query from cold stage + */ + public Trace queryTrace(final String traceId, @Nullable final Duration duration) throws IOException { DebuggingTraceContext traceContext = TRACE_CONTEXT.get(); DebuggingSpan span = null; try { @@ -152,7 +156,7 @@ public class TraceQueryService implements Service { msg.append("Condition: TraceId: ").append(traceId); span.setMsg(msg.toString()); } - return invokeQueryTrace(traceId); + return invokeQueryTrace(traceId, duration); } finally { if (traceContext != null && span != null) { traceContext.stopSpan(span); @@ -160,10 +164,10 @@ public class TraceQueryService implements Service { } } - private Trace invokeQueryTrace(final String traceId) throws IOException { + private Trace invokeQueryTrace(final String traceId, @Nullable final Duration duration) throws IOException { Trace trace = new Trace(); - List segmentRecords = getTraceQueryDAO().queryByTraceIdDebuggable(traceId); + List segmentRecords = getTraceQueryDAO().queryByTraceIdDebuggable(traceId, duration); if (segmentRecords.isEmpty()) { trace.getSpans().addAll(getTraceQueryDAO().doFlexibleTraceQuery(traceId)); } else { @@ -192,7 +196,7 @@ public class TraceQueryService implements Service { if (CollectionUtils.isNotEmpty(sortedSpans)) { final List spanAttachedEvents = getSpanAttachedEventQueryDAO(). - querySpanAttachedEventsDebuggable(SpanAttachedEventTraceType.SKYWALKING, Arrays.asList(traceId)); + querySpanAttachedEventsDebuggable(SpanAttachedEventTraceType.SKYWALKING, Arrays.asList(traceId), duration); appendAttachedEventsToSpanDebuggable(sortedSpans, spanAttachedEvents); } 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 9cda596c52..ebe6262967 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 @@ -34,6 +34,7 @@ public class Duration { private String start; private String end; private Step step; + private boolean coldStage = false; /** * See {@link DurationUtils#convertToTimeBucket(Step, String)} diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/query/ISpanAttachedEventQueryDAO.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/query/ISpanAttachedEventQueryDAO.java index 4e8c048b74..8514f1780a 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/query/ISpanAttachedEventQueryDAO.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/query/ISpanAttachedEventQueryDAO.java @@ -18,8 +18,10 @@ package org.apache.skywalking.oap.server.core.storage.query; +import javax.annotation.Nullable; import org.apache.skywalking.oap.server.core.analysis.manual.spanattach.SpanAttachedEventRecord; import org.apache.skywalking.oap.server.core.analysis.manual.spanattach.SpanAttachedEventTraceType; +import org.apache.skywalking.oap.server.core.query.input.Duration; import org.apache.skywalking.oap.server.core.query.type.debugging.DebuggingSpan; import org.apache.skywalking.oap.server.core.query.type.debugging.DebuggingTraceContext; import org.apache.skywalking.oap.server.library.module.Service; @@ -28,7 +30,10 @@ import java.io.IOException; import java.util.List; public interface ISpanAttachedEventQueryDAO extends Service { - default List querySpanAttachedEventsDebuggable(SpanAttachedEventTraceType type, List traceIds) throws IOException { + /** + * @param duration nullable unless for BanyanDB query from cold stage + */ + default List querySpanAttachedEventsDebuggable(SpanAttachedEventTraceType type, List traceIds, @Nullable Duration duration) throws IOException { DebuggingTraceContext traceContext = DebuggingTraceContext.TRACE_CONTEXT.get(); DebuggingSpan span = null; try { @@ -41,7 +46,7 @@ public interface ISpanAttachedEventQueryDAO extends Service { .append(traceIds); span.setMsg(builder.toString()); } - return querySpanAttachedEvents(type, traceIds); + return querySpanAttachedEvents(type, traceIds, duration); } finally { if (traceContext != null && span != null) { traceContext.stopSpan(span); @@ -49,5 +54,8 @@ public interface ISpanAttachedEventQueryDAO extends Service { } } - List querySpanAttachedEvents(SpanAttachedEventTraceType type, List traceIds) throws IOException; + /** + * @param duration nullable unless for BanyanDB query from cold stage + */ + List querySpanAttachedEvents(SpanAttachedEventTraceType type, List traceIds, @Nullable Duration duration) throws IOException; } diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/query/ITraceQueryDAO.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/query/ITraceQueryDAO.java index a8785f1d90..94f615f154 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/query/ITraceQueryDAO.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/query/ITraceQueryDAO.java @@ -20,6 +20,7 @@ package org.apache.skywalking.oap.server.core.storage.query; import java.io.IOException; import java.util.List; +import javax.annotation.Nullable; import org.apache.skywalking.oap.server.core.analysis.manual.searchtag.Tag; import org.apache.skywalking.oap.server.core.analysis.manual.segment.SegmentRecord; import org.apache.skywalking.oap.server.core.query.input.Duration; @@ -88,7 +89,10 @@ public interface ITraceQueryDAO extends Service { } } - default List queryByTraceIdDebuggable(String traceId) throws IOException { + /** + * @param duration nullable unless for BanyanDB query from cold stage + */ + default List queryByTraceIdDebuggable(String traceId, @Nullable Duration duration) throws IOException { DebuggingTraceContext traceContext = DebuggingTraceContext.TRACE_CONTEXT.get(); DebuggingSpan span = null; try { @@ -99,7 +103,7 @@ public interface ITraceQueryDAO extends Service { .append(traceId); span.setMsg(builder.toString()); } - return queryByTraceId(traceId); + return queryByTraceId(traceId, duration); } finally { if (traceContext != null && span != null) { traceContext.stopSpan(span); @@ -120,14 +124,23 @@ public interface ITraceQueryDAO extends Service { QueryOrder queryOrder, final List tags) throws IOException; - List queryByTraceId(String traceId) throws IOException; - - List queryBySegmentIdList(List segmentIdList) throws IOException; - - List queryByTraceIdWithInstanceId(List traceIdList, List instanceIdList) throws IOException; + /** + * @param duration nullable unless for BanyanDB query from cold stage + */ + List queryByTraceId(String traceId, @Nullable Duration duration) throws IOException; /** - * This method gives more flexible for 3rd trace without segment concept, which can't search data through {@link #queryByTraceId(String)} + * @param duration nullable unless for BanyanDB query from cold stage + */ + List queryBySegmentIdList(List segmentIdList, @Nullable Duration duration) throws IOException; + + /** + * @param duration nullable unless for BanyanDB query from cold stage + */ + List queryByTraceIdWithInstanceId(List traceIdList, List instanceIdList, @Nullable Duration duration) throws IOException; + + /** + * This method gives more flexible for 3rd trace without segment concept, which can't search data through {@link #queryByTraceId(String, Duration)} */ List doFlexibleTraceQuery(String traceId) throws IOException; } diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/query/IZipkinQueryDAO.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/query/IZipkinQueryDAO.java index e83c5e3779..a72176d04e 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/query/IZipkinQueryDAO.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/query/IZipkinQueryDAO.java @@ -18,6 +18,7 @@ package org.apache.skywalking.oap.server.core.storage.query; +import javax.annotation.Nullable; import org.apache.skywalking.oap.server.core.query.input.Duration; import org.apache.skywalking.oap.server.core.query.type.debugging.DebuggingSpan; import org.apache.skywalking.oap.server.core.query.type.debugging.DebuggingTraceContext; @@ -52,7 +53,10 @@ public interface IZipkinQueryDAO extends DAO { } } - default List getTraceDebuggable(final String traceId) throws IOException { + /** + * @param duration nullable unless for BanyanDB query from cold stage + */ + default List getTraceDebuggable(final String traceId, @Nullable final Duration duration) throws IOException { DebuggingTraceContext traceContext = DebuggingTraceContext.TRACE_CONTEXT.get(); DebuggingSpan span = null; try { @@ -60,7 +64,7 @@ public interface IZipkinQueryDAO extends DAO { span = traceContext.createSpan("Query Dao: getTrace"); span.setMsg("Condition: TraceId: " + traceId); } - return getTrace(traceId); + return getTrace(traceId, duration); } finally { if (traceContext != null && span != null) { traceContext.stopSpan(span); @@ -74,9 +78,18 @@ public interface IZipkinQueryDAO extends DAO { List getSpanNames(final String serviceName) throws IOException; - List getTrace(final String traceId) throws IOException; + /** + * @param duration nullable unless for BanyanDB query from cold stage + */ + List getTrace(final String traceId, @Nullable final Duration duration) throws IOException; + /** + * @param duration nullable unless for BanyanDB query from cold stage + */ List> getTraces(final QueryRequest request, final Duration duration) throws IOException; - List> getTraces(final Set traceIds) throws IOException; + /** + * @param duration nullable unless for BanyanDB query from cold stage + */ + List> getTraces(final Set traceIds, @Nullable final Duration duration) throws IOException; } diff --git a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/resolver/MetadataQueryV2.java b/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/resolver/MetadataQueryV2.java index bc971d40b0..d393a39751 100644 --- a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/resolver/MetadataQueryV2.java +++ b/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/resolver/MetadataQueryV2.java @@ -28,12 +28,15 @@ import org.apache.skywalking.oap.query.graphql.type.TimeInfo; import org.apache.skywalking.oap.server.core.CoreModule; import org.apache.skywalking.oap.server.core.analysis.IDManager; import org.apache.skywalking.oap.server.core.query.MetadataQueryService; +import org.apache.skywalking.oap.server.core.query.TTLStatusQuery; import org.apache.skywalking.oap.server.core.query.input.Duration; import org.apache.skywalking.oap.server.core.query.type.Endpoint; import org.apache.skywalking.oap.server.core.query.type.EndpointInfo; import org.apache.skywalking.oap.server.core.query.type.Process; 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.ttl.MetricsTTL; +import org.apache.skywalking.oap.server.core.storage.ttl.RecordsTTL; import org.apache.skywalking.oap.server.library.module.ModuleManager; import static org.apache.skywalking.oap.query.graphql.AsyncQueryUtils.queryAsync; @@ -47,6 +50,7 @@ public class MetadataQueryV2 implements GraphQLQueryResolver { private final ModuleManager moduleManager; private MetadataQueryService metadataQueryService; + private TTLStatusQuery ttlStatusQuery; public MetadataQueryV2(ModuleManager moduleManager) { this.moduleManager = moduleManager; @@ -61,6 +65,15 @@ public class MetadataQueryV2 implements GraphQLQueryResolver { return metadataQueryService; } + private TTLStatusQuery getTTLStatusQuery() { + if (ttlStatusQuery == null) { + ttlStatusQuery = moduleManager.find(CoreModule.NAME) + .provider() + .getService(TTLStatusQuery.class); + } + return ttlStatusQuery; + } + public CompletableFuture> listLayers() { return queryAsync(() -> getMetadataQueryService().listLayers()); } @@ -115,4 +128,12 @@ public class MetadataQueryV2 implements GraphQLQueryResolver { timeInfo.setTimezone(timezoneFormat.format(date)); return timeInfo; } + + public RecordsTTL getRecordsTTL() { + return getTTLStatusQuery().getTTL().getRecords(); + } + + public MetricsTTL getMetricsTTL() { + return getTTLStatusQuery().getTTL().getMetrics(); + } } 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 b4ba9fc43e..829405fb03 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 @@ -117,7 +117,28 @@ public class TraceQuery implements GraphQLQueryResolver { DebuggingTraceContext.TRACE_CONTEXT.set(traceContext); DebuggingSpan span = traceContext.createSpan("Query trace"); try { - Trace trace = getQueryService().queryTrace(traceId); + Trace trace = getQueryService().queryTrace(traceId, null); + if (debug) { + trace.setDebuggingTrace(traceContext.getExecTrace()); + } + return trace; + } finally { + traceContext.stopSpan(span); + traceContext.stopTrace(); + TRACE_CONTEXT.remove(); + } + }); + } + + public CompletableFuture queryTraceFromColdStage(final String traceId, Duration duration, boolean debug) { + duration.setColdStage(true); + return queryAsync(() -> { + DebuggingTraceContext traceContext = new DebuggingTraceContext( + "TraceId: " + traceId, debug, false); + DebuggingTraceContext.TRACE_CONTEXT.set(traceContext); + DebuggingSpan span = traceContext.createSpan("Query trace from cold stage"); + try { + Trace trace = getQueryService().queryTrace(traceId, duration); if (debug) { trace.setDebuggingTrace(traceContext.getExecTrace()); } 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 a9ed9eef09..23baed2234 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 a9ed9eef09cf97256df9a33eab91fca1ba13096e +Subproject commit 23baed2234e4bbc18cd7ec7d47bfe7d4bc8ef363 diff --git a/oap-server/server-query-plugin/status-query-plugin/src/main/java/org/apache/skywalking/oap/query/debug/DebuggingHTTPHandler.java b/oap-server/server-query-plugin/status-query-plugin/src/main/java/org/apache/skywalking/oap/query/debug/DebuggingHTTPHandler.java index c0025fdb8a..cd03825648 100644 --- a/oap-server/server-query-plugin/status-query-plugin/src/main/java/org/apache/skywalking/oap/query/debug/DebuggingHTTPHandler.java +++ b/oap-server/server-query-plugin/status-query-plugin/src/main/java/org/apache/skywalking/oap/query/debug/DebuggingHTTPHandler.java @@ -120,6 +120,7 @@ public class DebuggingHTTPHandler { @Param("startTime") String startTime, @Param("endTime") String endTime, @Param("step") String step, + @Param("coldStage") Optional coldStage, @Param("service") String service, @Param("serviceLayer") String serviceLayer, @Param("serviceInstance") Optional serviceInstance, @@ -148,6 +149,7 @@ public class DebuggingHTTPHandler { duration.setStart(startTime); duration.setEnd(endTime); duration.setStep(Step.valueOf(step)); + coldStage.ifPresent(duration::setColdStage); ExpressionResult expressionResult = mqeQuery.execExpression(expression, entity, duration, true, dumpStorageRsp).join(); DebuggingTrace execTrace = expressionResult.getDebuggingTrace(); DebuggingMQERsp result = new DebuggingMQERsp( @@ -168,6 +170,7 @@ public class DebuggingHTTPHandler { @Param("startTime") String startTime, @Param("endTime") String endTime, @Param("step") String step, + @Param("coldStage") Optional coldStage, @Param("minTraceDuration") Optional minDuration, @Param("maxTraceDuration") Optional maxDuration, @Param("traceState") String traceState, @@ -185,6 +188,7 @@ public class DebuggingHTTPHandler { duration.setStart(startTime); duration.setEnd(endTime); duration.setStep(Step.valueOf(step)); + coldStage.ifPresent(duration::setColdStage); Pagination pagination = new Pagination(); pagination.setPageNum(pageNum); pagination.setPageSize(pageSize); @@ -226,6 +230,26 @@ public class DebuggingHTTPHandler { return transToYAMLString(result); } + /** + * Only for BanyanDB, can be used to query the trace in the cold stage. + */ + @SneakyThrows + @Get("/debugging/query/trace/queryTraceFromColdStage") + public String queryTraceFromColdStage(@Param("traceId") String traceId, + @Param("startTime") String startTime, + @Param("endTime") String endTime, + @Param("step") String step) { + Duration duration = new Duration(); + duration.setStart(startTime); + duration.setEnd(endTime); + duration.setStep(Step.valueOf(step)); + duration.setColdStage(true); + Trace trace = traceQuery.queryTraceFromColdStage(traceId, duration, true).join(); + DebuggingQueryTraceRsp result = new DebuggingQueryTraceRsp( + trace.getSpans(), transformTrace(trace.getDebuggingTrace())); + return transToYAMLString(result); + } + @SneakyThrows @Get("/debugging/query/zipkin/api/v2/traces") public String queryZipkinTraces(@Param("serviceName") Optional serviceName, @@ -293,11 +317,13 @@ public class DebuggingHTTPHandler { public String getGlobalTopology(@Param("startTime") String startTime, @Param("endTime") String endTime, @Param("step") String step, + @Param("coldStage") Optional coldStage, @Param("serviceLayer") Optional serviceLayer) { Duration duration = new Duration(); duration.setStart(startTime); duration.setEnd(endTime); duration.setStep(Step.valueOf(step)); + coldStage.ifPresent(duration::setColdStage); Topology topology = topologyQuery.getGlobalTopology(duration, serviceLayer.orElse(null), true).join(); DebuggingQueryServiceTopologyRsp result = new DebuggingQueryServiceTopologyRsp( topology.getNodes(), topology.getCalls(), transformTrace(topology.getDebuggingTrace())); @@ -309,13 +335,14 @@ public class DebuggingHTTPHandler { public String getServicesTopology(@Param("startTime") String startTime, @Param("endTime") String endTime, @Param("step") String step, + @Param("coldStage") Optional coldStage, @Param("serviceLayer") String serviceLayer, @Param("services") String services) { Duration duration = new Duration(); duration.setStart(startTime); duration.setEnd(endTime); duration.setStep(Step.valueOf(step)); - + coldStage.ifPresent(duration::setColdStage); List ids = Arrays.stream(services.split(Const.COMMA)) .map(name -> IDManager.ServiceID.buildId(name, Layer.nameOf(serviceLayer).isNormal())) .collect(Collectors.toList()); @@ -330,6 +357,7 @@ public class DebuggingHTTPHandler { public String getServiceInstanceTopology(@Param("startTime") String startTime, @Param("endTime") String endTime, @Param("step") String step, + @Param("coldStage") Optional coldStage, @Param("clientService") String clientService, @Param("serverService") String serverService, @Param("clientServiceLayer") String clientServiceLayer, @@ -338,6 +366,7 @@ public class DebuggingHTTPHandler { duration.setStart(startTime); duration.setEnd(endTime); duration.setStep(Step.valueOf(step)); + coldStage.ifPresent(duration::setColdStage); String clientServiceId = IDManager.ServiceID.buildId(clientService, Layer.nameOf(clientServiceLayer).isNormal()); String serverServiceId = IDManager.ServiceID.buildId(serverService, Layer.nameOf(serverServiceLayer).isNormal()); ServiceInstanceTopology topology = topologyQuery.getServiceInstanceTopology(clientServiceId, serverServiceId, duration, true).join(); @@ -351,6 +380,7 @@ public class DebuggingHTTPHandler { public String getEndpointDependencies(@Param("startTime") String startTime, @Param("endTime") String endTime, @Param("step") String step, + @Param("coldStage") Optional coldStage, @Param("service") String service, @Param("serviceLayer") String serviceLayer, @Param("endpoint") String endpoint) { @@ -358,6 +388,7 @@ public class DebuggingHTTPHandler { duration.setStart(startTime); duration.setEnd(endTime); duration.setStep(Step.valueOf(step)); + coldStage.ifPresent(duration::setColdStage); String endpointId = IDManager.EndpointID.buildId( IDManager.ServiceID.buildId(service, Layer.nameOf(serviceLayer).isNormal()), endpoint); EndpointTopology topology = topologyQuery.getEndpointDependencies(endpointId, duration, true).join(); @@ -371,6 +402,7 @@ public class DebuggingHTTPHandler { public String getProcessTopology(@Param("startTime") String startTime, @Param("endTime") String endTime, @Param("step") String step, + @Param("coldStage") Optional coldStage, @Param("service") String service, @Param("serviceLayer") String serviceLayer, @Param("instance") String process) { @@ -378,6 +410,7 @@ public class DebuggingHTTPHandler { duration.setStart(startTime); duration.setEnd(endTime); duration.setStep(Step.valueOf(step)); + coldStage.ifPresent(duration::setColdStage); String instanceId = IDManager.ServiceInstanceID.buildId( IDManager.ServiceID.buildId(service, Layer.nameOf(serviceLayer).isNormal()), process); ProcessTopology topology = topologyQuery.getProcessTopology(instanceId, duration, true).join(); @@ -395,6 +428,7 @@ public class DebuggingHTTPHandler { @Param("startTime") Optional startTime, @Param("endTime") Optional endTime, @Param("step") Optional step, + @Param("coldStage") Optional coldStage, @Param("traceId") Optional traceId, @Param("segmentId") Optional segmentId, @Param("spanId") Optional spanId, @@ -420,6 +454,7 @@ public class DebuggingHTTPHandler { duration.setStart(startTime.get()); duration.setEnd(endTime.get()); duration.setStep(Step.valueOf(step.get())); + coldStage.ifPresent(duration::setColdStage); condition.setQueryDuration(duration); } diff --git a/oap-server/server-query-plugin/zipkin-query-plugin/src/main/java/org/apache/skywalking/oap/query/zipkin/handler/ZipkinQueryHandler.java b/oap-server/server-query-plugin/zipkin-query-plugin/src/main/java/org/apache/skywalking/oap/query/zipkin/handler/ZipkinQueryHandler.java index 6f3c33964e..456da749fd 100644 --- a/oap-server/server-query-plugin/zipkin-query-plugin/src/main/java/org/apache/skywalking/oap/query/zipkin/handler/ZipkinQueryHandler.java +++ b/oap-server/server-query-plugin/zipkin-query-plugin/src/main/java/org/apache/skywalking/oap/query/zipkin/handler/ZipkinQueryHandler.java @@ -187,12 +187,12 @@ public class ZipkinQueryHandler { if (StringUtil.isEmpty(traceId)) { return AggregatedHttpResponse.of(BAD_REQUEST, ANY_TEXT_TYPE, "traceId is empty or null"); } - List trace = getZipkinQueryDAO().getTraceDebuggable(Span.normalizeTraceId(traceId.trim())); + List trace = getZipkinQueryDAO().getTraceDebuggable(Span.normalizeTraceId(traceId.trim()), null); if (CollectionUtils.isEmpty(trace)) { return AggregatedHttpResponse.of(NOT_FOUND, ANY_TEXT_TYPE, traceId + " not found"); } appendEventsDebuggable(trace, getSpanAttachedEventQueryDAO().querySpanAttachedEventsDebuggable( - SpanAttachedEventTraceType.ZIPKIN, Arrays.asList(traceId))); + SpanAttachedEventTraceType.ZIPKIN, Arrays.asList(traceId), null)); return response(SpanBytesEncoder.JSON_V2.encodeList(trace)); } finally { if (traceContext != null && debuggingSpan != null) { @@ -266,7 +266,7 @@ public class ZipkinQueryHandler { } } - List> traces = getZipkinQueryDAO().getTraces(normalizeTraceIds); + List> traces = getZipkinQueryDAO().getTraces(normalizeTraceIds, null); appendEventsToTraces(traces); return response(encodeTraces(traces)); } @@ -365,7 +365,7 @@ public class ZipkinQueryHandler { } final List records = getSpanAttachedEventQueryDAO().querySpanAttachedEventsDebuggable(SpanAttachedEventTraceType.ZIPKIN, - new ArrayList<>(traceIdWithSpans.keySet())); + new ArrayList<>(traceIdWithSpans.keySet()), null); final Map> traceEvents = records.stream().collect(Collectors.groupingBy(SpanAttachedEventRecord::getRelatedTraceId)); for (Map.Entry> entry : traceEvents.entrySet()) { appendEventsDebuggable(traceIdWithSpans.get(entry.getKey()), entry.getValue()); diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBAggregationQueryDAO.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBAggregationQueryDAO.java index 9c8c97f723..008bced45a 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBAggregationQueryDAO.java +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBAggregationQueryDAO.java @@ -52,8 +52,8 @@ public class BanyanDBAggregationQueryDAO extends AbstractBanyanDBDAO implements @Override public List sortMetrics(TopNCondition condition, String valueColumnName, Duration duration, List additionalConditions) throws IOException { + final boolean isColdStage = duration != null && duration.isColdStage(); final String modelName = condition.getName(); - final TimestampRange timestampRange = new TimestampRange(duration.getStartTimestamp(), duration.getEndTimestamp()); MetadataRegistry.Schema schema = MetadataRegistry.INSTANCE.findMetadata(modelName, duration.getStep()); if (schema == null) { throw new IOException("schema is not registered"); @@ -71,20 +71,21 @@ public class BanyanDBAggregationQueryDAO extends AbstractBanyanDBDAO implements if (CollectionUtils.isEmpty(additionalConditions) || additionalConditions.stream().map(KeyValue::getKey).collect(Collectors.toSet()) .equals(ImmutableSet.copyOf(schema.getTopNSpec().getGroupByTagNamesList()))) { - return serverSideTopN(condition, schema, spec, timestampRange, additionalConditions); + return serverSideTopN(isColdStage, condition, schema, spec, getTimestampRange(duration), additionalConditions); } } - return directMetricsTopN(condition, schema, valueColumnName, spec, timestampRange, additionalConditions); + return directMetricsTopN(isColdStage, condition, schema, valueColumnName, spec, getTimestampRange(duration), additionalConditions); } - List serverSideTopN(TopNCondition condition, MetadataRegistry.Schema schema, MetadataRegistry.ColumnSpec valueColumnSpec, + //todo: query cold stage + List serverSideTopN(boolean isColdStage, TopNCondition condition, MetadataRegistry.Schema schema, MetadataRegistry.ColumnSpec valueColumnSpec, TimestampRange timestampRange, List additionalConditions) throws IOException { TopNQueryResponse resp = null; if (condition.getOrder() == Order.DES) { - resp = topNQueryDebuggable(schema, timestampRange, condition.getTopN(), AbstractQuery.Sort.DESC, additionalConditions, condition.getAttributes()); + resp = topNQueryDebuggable(isColdStage, schema, timestampRange, condition.getTopN(), AbstractQuery.Sort.DESC, additionalConditions, condition.getAttributes()); } else { - resp = topNQueryDebuggable(schema, timestampRange, condition.getTopN(), AbstractQuery.Sort.ASC, additionalConditions, condition.getAttributes()); + resp = topNQueryDebuggable(isColdStage, schema, timestampRange, condition.getTopN(), AbstractQuery.Sort.ASC, additionalConditions, condition.getAttributes()); } if (resp.size() == 0) { return Collections.emptyList(); @@ -103,9 +104,9 @@ public class BanyanDBAggregationQueryDAO extends AbstractBanyanDBDAO implements return topNList; } - List directMetricsTopN(TopNCondition condition, MetadataRegistry.Schema schema, String valueColumnName, MetadataRegistry.ColumnSpec valueColumnSpec, + List directMetricsTopN(boolean isColdStage, TopNCondition condition, MetadataRegistry.Schema schema, String valueColumnName, MetadataRegistry.ColumnSpec valueColumnSpec, TimestampRange timestampRange, List additionalConditions) throws IOException { - MeasureQueryResponse resp = queryDebuggable(schema, TAGS, Collections.singleton(valueColumnName), + MeasureQueryResponse resp = queryDebuggable(isColdStage, schema, TAGS, Collections.singleton(valueColumnName), timestampRange, new QueryBuilder() { @Override protected void apply(MeasureQuery query) { diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBIndexInstaller.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBIndexInstaller.java index 843edeb99f..90bebd4072 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBIndexInstaller.java +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBIndexInstaller.java @@ -324,10 +324,12 @@ public class BanyanDBIndexInstaller extends ModelInstaller { stage.getTtl())) .setNodeSelector(stage.getNodeSelector()) .setClose(stage.isClose()) - //todo: set the default query stages ); } } + if (CollectionUtils.isNotEmpty(metadata.getResource().getDefaultQueryStages())) { + optsBuilder.addAllDefaultStages(metadata.getResource().getDefaultQueryStages()); + } gBuilder.setResourceOpts(optsBuilder.build()); if (!RunningMode.isNoInitMode()) { if (!groupAligned.contains(metadata.getGroup())) { diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBRecordsQueryDAO.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBRecordsQueryDAO.java index 99437f1d54..62515b86df 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBRecordsQueryDAO.java +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBRecordsQueryDAO.java @@ -23,7 +23,6 @@ import org.apache.skywalking.banyandb.v1.client.AbstractQuery; import org.apache.skywalking.banyandb.v1.client.RowEntity; import org.apache.skywalking.banyandb.v1.client.StreamQuery; import org.apache.skywalking.banyandb.v1.client.StreamQueryResponse; -import org.apache.skywalking.banyandb.v1.client.TimestampRange; import org.apache.skywalking.oap.server.core.analysis.topn.TopN; import org.apache.skywalking.oap.server.core.query.enumeration.Order; import org.apache.skywalking.oap.server.core.query.input.Duration; @@ -47,11 +46,11 @@ public class BanyanDBRecordsQueryDAO extends AbstractBanyanDBDAO implements IRec @Override public List readRecords(RecordCondition condition, String valueColumnName, Duration duration) throws IOException { + final boolean isColdStage = duration != null && duration.isColdStage(); final String modelName = condition.getName(); - final TimestampRange timestampRange = new TimestampRange(duration.getStartTimestamp(), duration.getEndTimestamp()); final Set tags = ImmutableSet.of(TopN.ENTITY_ID, TopN.STATEMENT, TopN.TRACE_ID, valueColumnName); - StreamQueryResponse resp = queryDebuggable(modelName, tags, - timestampRange, new QueryBuilder() { + StreamQueryResponse resp = queryDebuggable(isColdStage, modelName, tags, + getTimestampRange(duration), new QueryBuilder() { @Override protected void apply(StreamQuery query) { query.and(eq(TopN.ENTITY_ID, condition.getParentEntity().buildId())); diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBZipkinQueryDAO.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBZipkinQueryDAO.java index 3d1cf7d7cc..7b31558f8e 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBZipkinQueryDAO.java +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBZipkinQueryDAO.java @@ -27,6 +27,7 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Set; +import javax.annotation.Nullable; import org.apache.skywalking.banyandb.v1.client.AbstractCriteria; import org.apache.skywalking.banyandb.v1.client.AbstractQuery; import org.apache.skywalking.banyandb.v1.client.DataPoint; @@ -87,7 +88,7 @@ public class BanyanDBZipkinQueryDAO extends AbstractBanyanDBDAO implements IZipk public List getServiceNames() throws IOException { MetadataRegistry.Schema schema = MetadataRegistry.INSTANCE.findMetadata(ZipkinServiceTraffic.INDEX_NAME, DownSampling.Minute); MeasureQueryResponse resp = - query(schema, + query(false, schema, SERVICE_TRAFFIC_TAGS, Collections.emptySet(), new QueryBuilder() { @@ -108,7 +109,7 @@ public class BanyanDBZipkinQueryDAO extends AbstractBanyanDBDAO implements IZipk public List getRemoteServiceNames(final String serviceName) throws IOException { MetadataRegistry.Schema schema = MetadataRegistry.INSTANCE.findMetadata(ZipkinServiceRelationTraffic.INDEX_NAME, DownSampling.Minute); MeasureQueryResponse resp = - query(schema, + query(false, schema, REMOTE_SERVICE_TRAFFIC_TAGS, Collections.emptySet(), new QueryBuilder() { @@ -132,7 +133,7 @@ public class BanyanDBZipkinQueryDAO extends AbstractBanyanDBDAO implements IZipk public List getSpanNames(final String serviceName) throws IOException { MetadataRegistry.Schema schema = MetadataRegistry.INSTANCE.findMetadata(ZipkinServiceSpanTraffic.INDEX_NAME, DownSampling.Minute); MeasureQueryResponse resp = - query(schema, + query(false, schema, SPAN_TRAFFIC_TAGS, Collections.emptySet(), new QueryBuilder() { @@ -153,9 +154,10 @@ public class BanyanDBZipkinQueryDAO extends AbstractBanyanDBDAO implements IZipk } @Override - public List getTrace(final String traceId) throws IOException { + public List getTrace(final String traceId, @Nullable final Duration duration) throws IOException { + final boolean isColdStage = duration != null && duration.isColdStage(); StreamQueryResponse resp = - query(ZipkinSpanRecord.INDEX_NAME, TRACE_TAGS, + query(isColdStage, ZipkinSpanRecord.INDEX_NAME, TRACE_TAGS, getTimestampRange(duration), new QueryBuilder() { @Override @@ -197,13 +199,14 @@ public class BanyanDBZipkinQueryDAO extends AbstractBanyanDBDAO implements IZipk scrollEndTime = spans.get(spans.size() - 1).getTimestampMillis(); } - return getTraces(traceIds); + return getTraces(traceIds, duration); } private List getSpans(final QueryRequest request, Duration duration, long scrollEndTime, int limit) throws IOException { + final boolean isColdStage = duration != null && duration.isColdStage(); final long startTimeMillis = duration.getStartTimestamp(); TimestampRange tsRange = null; if (startTimeMillis > 0 && scrollEndTime > 0) { @@ -245,7 +248,7 @@ public class BanyanDBZipkinQueryDAO extends AbstractBanyanDBDAO implements IZipk query.setLimit(limit); } }; - StreamQueryResponse resp = query(ZipkinSpanRecord.INDEX_NAME, TRACE_TAGS, tsRange, queryBuilder); + StreamQueryResponse resp = query(isColdStage, ZipkinSpanRecord.INDEX_NAME, TRACE_TAGS, tsRange, queryBuilder); List spans = new ArrayList<>(); //needs to keep order here for (final RowEntity rowEntity : resp.getElements()) { ZipkinSpanRecord spanRecord = new ZipkinSpanRecord.Builder().storage2Entity( @@ -256,13 +259,14 @@ public class BanyanDBZipkinQueryDAO extends AbstractBanyanDBDAO implements IZipk } @Override - public List> getTraces(final Set traceIds) throws IOException { + public List> getTraces(final Set traceIds, @Nullable final Duration duration) throws IOException { if (CollectionUtils.isEmpty(traceIds)) { return Collections.EMPTY_LIST; } + final boolean isColdStage = duration != null && duration.isColdStage(); List conditions = new ArrayList<>(traceIds.size()); StreamQueryResponse resp = - queryDebuggable(ZipkinSpanRecord.INDEX_NAME, TRACE_TAGS, null, + queryDebuggable(isColdStage, ZipkinSpanRecord.INDEX_NAME, TRACE_TAGS, getTimestampRange(duration), new QueryBuilder() { @Override diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/measure/BanyanDBEBPFProfilingScheduleQueryDAO.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/measure/BanyanDBEBPFProfilingScheduleQueryDAO.java index 33164a5e9b..d0cf955777 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/measure/BanyanDBEBPFProfilingScheduleQueryDAO.java +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/measure/BanyanDBEBPFProfilingScheduleQueryDAO.java @@ -53,7 +53,7 @@ import java.util.stream.Collectors; @Override public List querySchedules(String taskId) throws IOException { MetadataRegistry.Schema schema = MetadataRegistry.INSTANCE.findMetadata(EBPFProfilingScheduleRecord.INDEX_NAME, DownSampling.Minute); - MeasureQueryResponse resp = query(schema, + MeasureQueryResponse resp = query(false, schema, TAGS, Collections.emptySet(), new QueryBuilder() { @Override diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/measure/BanyanDBEventQueryDAO.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/measure/BanyanDBEventQueryDAO.java index cc85537b0b..5ecf61bda7 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/measure/BanyanDBEventQueryDAO.java +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/measure/BanyanDBEventQueryDAO.java @@ -30,10 +30,8 @@ import org.apache.skywalking.banyandb.v1.client.DataPoint; import org.apache.skywalking.banyandb.v1.client.MeasureQuery; import org.apache.skywalking.banyandb.v1.client.MeasureQueryResponse; import org.apache.skywalking.banyandb.v1.client.PairQueryCondition; -import org.apache.skywalking.banyandb.v1.client.TimestampRange; import org.apache.skywalking.oap.server.core.analysis.DownSampling; import org.apache.skywalking.oap.server.core.analysis.Layer; -import org.apache.skywalking.oap.server.core.analysis.TimeBucket; import org.apache.skywalking.oap.server.core.query.PaginationUtils; import org.apache.skywalking.oap.server.core.query.enumeration.Order; import org.apache.skywalking.oap.server.core.query.input.Duration; @@ -63,16 +61,9 @@ public class BanyanDBEventQueryDAO extends AbstractBanyanDBDAO implements IEvent public Events queryEvents(EventQueryCondition condition) throws Exception { MetadataRegistry.Schema schema = MetadataRegistry.INSTANCE.findMetadata(Event.INDEX_NAME, DownSampling.Minute); final Duration time = condition.getTime(); - TimestampRange tsRange = null; - if (time != null) { - long startTB = time.getStartTimeBucketInSec(); - long endTB = time.getEndTimeBucketInSec(); - if (startTB > 0 && endTB > 0) { - tsRange = new TimestampRange(TimeBucket.getTimestamp(startTB), TimeBucket.getTimestamp(endTB)); - } - } - MeasureQueryResponse resp = query(schema, TAGS, - Collections.emptySet(), tsRange, buildQuery(Collections.singletonList(condition))); + boolean isColdStage = time != null && time.isColdStage(); + MeasureQueryResponse resp = query(isColdStage, schema, TAGS, + Collections.emptySet(), getTimestampRange(time), buildQuery(Collections.singletonList(condition))); Events events = new Events(); if (resp.size() == 0) { return events; @@ -88,16 +79,9 @@ public class BanyanDBEventQueryDAO extends AbstractBanyanDBDAO implements IEvent MetadataRegistry.Schema schema = MetadataRegistry.INSTANCE.findMetadata(Event.INDEX_NAME, DownSampling.Minute); // Duration should be same for all conditions final Duration time = conditionList.get(0).getTime(); - TimestampRange tsRange = null; - if (time != null) { - long startTB = time.getStartTimeBucketInSec(); - long endTB = time.getEndTimeBucketInSec(); - if (startTB > 0 && endTB > 0) { - tsRange = new TimestampRange(TimeBucket.getTimestamp(startTB), TimeBucket.getTimestamp(endTB)); - } - } - MeasureQueryResponse resp = query(schema, TAGS, - Collections.emptySet(), tsRange, buildQuery(conditionList)); + boolean isColdStage = time != null && time.isColdStage(); + MeasureQueryResponse resp = query(isColdStage, schema, TAGS, + Collections.emptySet(), getTimestampRange(time), buildQuery(conditionList)); Events events = new Events(); if (resp.size() == 0) { return events; diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/measure/BanyanDBHierarchyQueryDAO.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/measure/BanyanDBHierarchyQueryDAO.java index a7e2361dc0..b8e08ff332 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/measure/BanyanDBHierarchyQueryDAO.java +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/measure/BanyanDBHierarchyQueryDAO.java @@ -63,7 +63,7 @@ public class BanyanDBHierarchyQueryDAO extends AbstractBanyanDBDAO implements IH @Override public List readAllServiceHierarchyRelations() throws Exception { MetadataRegistry.Schema schema = MetadataRegistry.INSTANCE.findMetadata(ServiceHierarchyRelationTraffic.INDEX_NAME, DownSampling.Minute); - MeasureQueryResponse resp = query(schema, + MeasureQueryResponse resp = query(false, schema, SERVICE_HIERARCHY_RELATION_TAGS, Collections.emptySet(), new QueryBuilder<>() { @Override @@ -87,7 +87,7 @@ public class BanyanDBHierarchyQueryDAO extends AbstractBanyanDBDAO implements IH public List readInstanceHierarchyRelations(final String instanceId, final String layer) throws Exception { MetadataRegistry.Schema schema = MetadataRegistry.INSTANCE.findMetadata(ServiceHierarchyRelationTraffic.INDEX_NAME, DownSampling.Minute); - MeasureQueryResponse resp = query(schema, + MeasureQueryResponse resp = query(false, schema, INSTANCE_HIERARCHY_RELATION_TAGS, Collections.emptySet(), buildInstanceRelationsQuery(instanceId, layer) ); diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/measure/BanyanDBMetadataQueryDAO.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/measure/BanyanDBMetadataQueryDAO.java index 9bc0f548e2..78938c649e 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/measure/BanyanDBMetadataQueryDAO.java +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/measure/BanyanDBMetadataQueryDAO.java @@ -93,7 +93,7 @@ public class BanyanDBMetadataQueryDAO extends AbstractBanyanDBDAO implements IMe public List listServices() throws IOException { MetadataRegistry.Schema schema = MetadataRegistry.INSTANCE.findMetadata(ServiceTraffic.INDEX_NAME, DownSampling.Minute); - MeasureQueryResponse resp = query(schema, + MeasureQueryResponse resp = query(false, schema, SERVICE_TRAFFIC_TAGS, Collections.emptySet(), new QueryBuilder() { @Override @@ -117,7 +117,7 @@ public class BanyanDBMetadataQueryDAO extends AbstractBanyanDBDAO implements IMe timestampRange = new TimestampRange(0, duration.getEndTimestamp()); } MetadataRegistry.Schema schema = MetadataRegistry.INSTANCE.findMetadata(InstanceTraffic.INDEX_NAME, DownSampling.Minute); - MeasureQueryResponse resp = query(schema, + MeasureQueryResponse resp = query(false, schema, INSTANCE_TRAFFIC_TAGS, Collections.emptySet(), timestampRange, @@ -145,7 +145,7 @@ public class BanyanDBMetadataQueryDAO extends AbstractBanyanDBDAO implements IMe public ServiceInstance getInstance(String instanceId) throws IOException { IDManager.ServiceInstanceID.InstanceIDDefinition id = IDManager.ServiceInstanceID.analysisId(instanceId); MetadataRegistry.Schema schema = MetadataRegistry.INSTANCE.findMetadata(InstanceTraffic.INDEX_NAME, DownSampling.Minute); - MeasureQueryResponse resp = query(schema, + MeasureQueryResponse resp = query(false, schema, INSTANCE_TRAFFIC_TAGS, Collections.emptySet(), new QueryBuilder() { @@ -161,7 +161,7 @@ public class BanyanDBMetadataQueryDAO extends AbstractBanyanDBDAO implements IMe @Override public List getInstances(List instanceIds) throws IOException { MetadataRegistry.Schema schema = MetadataRegistry.INSTANCE.findMetadata(InstanceTraffic.INDEX_NAME, DownSampling.Minute); - MeasureQueryResponse resp = query(schema, + MeasureQueryResponse resp = query(false, schema, INSTANCE_TRAFFIC_TAGS, Collections.emptySet(), new QueryBuilder() { @@ -184,7 +184,7 @@ public class BanyanDBMetadataQueryDAO extends AbstractBanyanDBDAO implements IMe @Override public List findEndpoint(String keyword, String serviceId, int limit, Duration duration) throws IOException { MetadataRegistry.Schema schema = MetadataRegistry.INSTANCE.findMetadata(EndpointTraffic.INDEX_NAME, DownSampling.Minute); - MeasureQueryResponse resp = query(schema, + MeasureQueryResponse resp = query(false, schema, ENDPOINT_TRAFFIC_TAGS, Collections.emptySet(), new QueryBuilder() { @@ -220,7 +220,7 @@ public class BanyanDBMetadataQueryDAO extends AbstractBanyanDBDAO implements IMe @Override public List listProcesses(String serviceId, ProfilingSupportStatus supportStatus, long lastPingStartTimeBucket, long lastPingEndTimeBucket) throws IOException { MetadataRegistry.Schema schema = MetadataRegistry.INSTANCE.findMetadata(ProcessTraffic.INDEX_NAME, DownSampling.Minute); - MeasureQueryResponse resp = query(schema, + MeasureQueryResponse resp = query(false, schema, PROCESS_TRAFFIC_TAGS, Collections.emptySet(), new QueryBuilder() { @@ -253,7 +253,7 @@ public class BanyanDBMetadataQueryDAO extends AbstractBanyanDBDAO implements IMe public List listProcesses(String serviceInstanceId, Duration duration, boolean includeVirtual) throws IOException { MetadataRegistry.Schema schema = MetadataRegistry.INSTANCE.findMetadata(ProcessTraffic.INDEX_NAME, DownSampling.Minute); long lastPingStartTimeBucket = duration.getStartTimeBucket(); - MeasureQueryResponse resp = query(schema, + MeasureQueryResponse resp = query(false, schema, PROCESS_TRAFFIC_TAGS, Collections.emptySet(), new QueryBuilder() { @@ -279,7 +279,7 @@ public class BanyanDBMetadataQueryDAO extends AbstractBanyanDBDAO implements IMe @Override public List listProcesses(String agentId, long startPingTimeBucket, long endPingTimeBucket) throws IOException { MetadataRegistry.Schema schema = MetadataRegistry.INSTANCE.findMetadata(ProcessTraffic.INDEX_NAME, DownSampling.Minute); - MeasureQueryResponse resp = query(schema, + MeasureQueryResponse resp = query(false, schema, PROCESS_TRAFFIC_TAGS, Collections.emptySet(), new QueryBuilder() { @@ -304,7 +304,7 @@ public class BanyanDBMetadataQueryDAO extends AbstractBanyanDBDAO implements IMe @Override public long getProcessCount(String serviceId, ProfilingSupportStatus profilingSupportStatus, long lastPingStartTimeBucket, long lastPingEndTimeBucket) throws IOException { MetadataRegistry.Schema schema = MetadataRegistry.INSTANCE.findMetadata(ProcessTraffic.INDEX_NAME, DownSampling.Minute); - MeasureQueryResponse resp = query(schema, + MeasureQueryResponse resp = query(false, schema, PROCESS_TRAFFIC_TAGS, Collections.emptySet(), new QueryBuilder() { @@ -326,7 +326,7 @@ public class BanyanDBMetadataQueryDAO extends AbstractBanyanDBDAO implements IMe @Override public long getProcessCount(String instanceId) throws IOException { MetadataRegistry.Schema schema = MetadataRegistry.INSTANCE.findMetadata(ProcessTraffic.INDEX_NAME, DownSampling.Minute); - MeasureQueryResponse resp = query(schema, + MeasureQueryResponse resp = query(false, schema, PROCESS_TRAFFIC_TAGS, Collections.emptySet(), new QueryBuilder() { @@ -346,7 +346,7 @@ public class BanyanDBMetadataQueryDAO extends AbstractBanyanDBDAO implements IMe @Override public Process getProcess(String processId) throws IOException { MetadataRegistry.Schema schema = MetadataRegistry.INSTANCE.findMetadata(ProcessTraffic.INDEX_NAME, DownSampling.Minute); - MeasureQueryResponse resp = query(schema, + MeasureQueryResponse resp = query(false, schema, PROCESS_TRAFFIC_TAGS, Collections.emptySet(), new QueryBuilder() { diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/measure/BanyanDBMetricsDAO.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/measure/BanyanDBMetricsDAO.java index e2abb01b17..ee2a1dd57c 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/measure/BanyanDBMetricsDAO.java +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/measure/BanyanDBMetricsDAO.java @@ -125,7 +125,7 @@ public class BanyanDBMetricsDAO extends AbstractBanyanDBDAO implements IMetricsD } List metricsInStorage = new ArrayList<>(metrics.size()); - MeasureQueryResponse resp = query(schema, schema.getTags(), schema.getFields(), timestampRange, new QueryBuilder() { + MeasureQueryResponse resp = query(false, schema, schema.getTags(), schema.getFields(), timestampRange, new QueryBuilder() { @Override protected void apply(MeasureQuery query) { seriesIDColumns.entrySet().forEach(entry -> { diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/measure/BanyanDBMetricsQueryDAO.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/measure/BanyanDBMetricsQueryDAO.java index 911058fb5a..6a32f0cf64 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/measure/BanyanDBMetricsQueryDAO.java +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/measure/BanyanDBMetricsQueryDAO.java @@ -29,7 +29,6 @@ import lombok.extern.slf4j.Slf4j; import org.apache.skywalking.banyandb.v1.client.DataPoint; import org.apache.skywalking.banyandb.v1.client.MeasureQuery; import org.apache.skywalking.banyandb.v1.client.MeasureQueryResponse; -import org.apache.skywalking.banyandb.v1.client.TimestampRange; import org.apache.skywalking.oap.server.core.analysis.TimeBucket; import org.apache.skywalking.oap.server.core.analysis.metrics.DataTable; import org.apache.skywalking.oap.server.core.analysis.metrics.HistogramMetrics; @@ -49,8 +48,6 @@ import org.apache.skywalking.oap.server.storage.plugin.banyandb.MetadataRegistry import org.apache.skywalking.oap.server.storage.plugin.banyandb.stream.AbstractBanyanDBDAO; import org.apache.skywalking.oap.server.storage.plugin.banyandb.util.ByteUtil; -import static java.util.Objects.nonNull; - @Slf4j public class BanyanDBMetricsQueryDAO extends AbstractBanyanDBDAO implements IMetricsQueryDAO { public BanyanDBMetricsQueryDAO(BanyanDBStorageClient client) { @@ -133,22 +130,13 @@ public class BanyanDBMetricsQueryDAO extends AbstractBanyanDBDAO implements IMet final String valueColumnName, final List labels, final Duration duration) throws IOException { - long startTB = 0; - long endTB = 0; - if (nonNull(duration)) { - startTB = duration.getStartTimeBucketInSec(); - endTB = duration.getEndTimeBucketInSec(); - } - TimestampRange timestampRange = null; - if (startTB > 0 && endTB > 0) { - timestampRange = new TimestampRange(TimeBucket.getTimestamp(startTB), TimeBucket.getTimestamp(endTB)); - } + final boolean isColdStage = duration != null && duration.isColdStage(); MetadataRegistry.Schema schema = MetadataRegistry.INSTANCE.findMetadata(metricsName, duration.getStep()); if (schema == null) { throw new IOException("schema is not registered"); } MeasureQueryResponse resp = query( - schema, ImmutableSet.of(Metrics.ENTITY_ID), ImmutableSet.of(valueColumnName), timestampRange, + isColdStage, schema, ImmutableSet.of(Metrics.ENTITY_ID), ImmutableSet.of(valueColumnName), getTimestampRange(duration), new QueryBuilder() { @Override protected void apply(MeasureQuery query) { @@ -214,10 +202,9 @@ public class BanyanDBMetricsQueryDAO extends AbstractBanyanDBDAO implements IMet } private Map queryByEntityID(MetadataRegistry.Schema schema, String valueColumnName, Duration duration, String entityID) throws IOException { - TimestampRange timestampRange = new TimestampRange(duration.getStartTimestamp(), duration.getEndTimestamp()); - + final boolean isColdStage = duration != null && duration.isColdStage(); Map map = new HashMap<>(); - MeasureQueryResponse resp = queryDebuggable(schema, ImmutableSet.of(Metrics.ENTITY_ID), ImmutableSet.of(valueColumnName), timestampRange, new QueryBuilder() { + MeasureQueryResponse resp = queryDebuggable(isColdStage, schema, ImmutableSet.of(Metrics.ENTITY_ID), ImmutableSet.of(valueColumnName), getTimestampRange(duration), new QueryBuilder() { @Override protected void apply(MeasureQuery query) { query.and(eq(Metrics.ENTITY_ID, entityID)); diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/measure/BanyanDBNetworkAddressAliasDAO.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/measure/BanyanDBNetworkAddressAliasDAO.java index 71d6d12aad..a0a342c1f4 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/measure/BanyanDBNetworkAddressAliasDAO.java +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/measure/BanyanDBNetworkAddressAliasDAO.java @@ -65,6 +65,7 @@ public class BanyanDBNetworkAddressAliasDAO extends AbstractBanyanDBDAO implemen public List loadLastUpdate(long timeBucket) { try { MeasureQueryResponse resp = query( + false, getSchema(), TAGS, Collections.emptySet(), diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/measure/BanyanDBServiceLabelDAO.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/measure/BanyanDBServiceLabelDAO.java index d5e578d29e..8dc16bfce3 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/measure/BanyanDBServiceLabelDAO.java +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/measure/BanyanDBServiceLabelDAO.java @@ -47,7 +47,7 @@ public class BanyanDBServiceLabelDAO extends AbstractBanyanDBDAO implements ISer @Override public List queryAllLabels(String serviceId) throws IOException { MetadataRegistry.Schema schema = MetadataRegistry.INSTANCE.findMetadata(ServiceLabelRecord.INDEX_NAME, DownSampling.Minute); - return query(schema, TAGS, + return query(false, schema, TAGS, Collections.emptySet(), new QueryBuilder() { @Override protected void apply(final MeasureQuery query) { diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/measure/BanyanDBTagAutocompleteQueryDAO.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/measure/BanyanDBTagAutocompleteQueryDAO.java index 026925f645..94fae1fb9e 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/measure/BanyanDBTagAutocompleteQueryDAO.java +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/measure/BanyanDBTagAutocompleteQueryDAO.java @@ -53,6 +53,7 @@ public class BanyanDBTagAutocompleteQueryDAO extends AbstractBanyanDBDAO impleme @Override public Set queryTagAutocompleteKeys(TagType tagType, int limit, Duration duration) throws IOException { + final boolean isColdStage = duration != null && duration.isColdStage(); MetadataRegistry.Schema schema = MetadataRegistry.INSTANCE.findMetadata(TagAutocompleteData.INDEX_NAME, DownSampling.Minute); long startMinTB = 0; long endMinTB = 0; @@ -68,10 +69,10 @@ public class BanyanDBTagAutocompleteQueryDAO extends AbstractBanyanDBDAO impleme if (startTB > 0 && endTB > 0) { range = new TimestampRange(TimeBucket.getTimestamp(startTB), TimeBucket.getTimestamp(endTB)); } - MeasureQueryResponse resp = query(schema, - TAGS_KEY, Collections.emptySet(), - range, - new QueryBuilder() { + MeasureQueryResponse resp = query(isColdStage, schema, + TAGS_KEY, Collections.emptySet(), + range, + new QueryBuilder() { @Override protected void apply(MeasureQuery query) { query.groupBy(ImmutableSet.of(TagAutocompleteData.TAG_KEY)); @@ -94,6 +95,7 @@ public class BanyanDBTagAutocompleteQueryDAO extends AbstractBanyanDBDAO impleme @Override public Set queryTagAutocompleteValues(TagType tagType, String tagKey, int limit, Duration duration) throws IOException { + final boolean isColdStage = duration != null && duration.isColdStage(); MetadataRegistry.Schema schema = MetadataRegistry.INSTANCE.findMetadata(TagAutocompleteData.INDEX_NAME, DownSampling.Minute); long startMinTB = 0; long endMinTB = 0; @@ -109,10 +111,10 @@ public class BanyanDBTagAutocompleteQueryDAO extends AbstractBanyanDBDAO impleme if (startTB > 0 && endTB > 0) { range = new TimestampRange(TimeBucket.getTimestamp(startTB), TimeBucket.getTimestamp(endTB)); } - MeasureQueryResponse resp = query(schema, - TAGS_KV, Collections.emptySet(), - range, - new QueryBuilder() { + MeasureQueryResponse resp = query(isColdStage, schema, + TAGS_KV, Collections.emptySet(), + range, + new QueryBuilder() { @Override protected void apply(MeasureQuery query) { query.groupBy(ImmutableSet.of(TagAutocompleteData.TAG_VALUE)); diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/measure/BanyanDBTopologyQueryDAO.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/measure/BanyanDBTopologyQueryDAO.java index e91fe30d43..0f10fa3722 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/measure/BanyanDBTopologyQueryDAO.java +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/measure/BanyanDBTopologyQueryDAO.java @@ -32,10 +32,8 @@ import org.apache.skywalking.banyandb.v1.client.AbstractCriteria; import org.apache.skywalking.banyandb.v1.client.DataPoint; import org.apache.skywalking.banyandb.v1.client.MeasureQuery; import org.apache.skywalking.banyandb.v1.client.MeasureQueryResponse; -import org.apache.skywalking.banyandb.v1.client.TimestampRange; import org.apache.skywalking.oap.server.core.UnexpectedException; import org.apache.skywalking.oap.server.core.analysis.DownSampling; -import org.apache.skywalking.oap.server.core.analysis.TimeBucket; import org.apache.skywalking.oap.server.core.analysis.manual.relation.endpoint.EndpointRelationServerSideMetrics; import org.apache.skywalking.oap.server.core.analysis.manual.relation.instance.ServiceInstanceRelationClientSideMetrics; import org.apache.skywalking.oap.server.core.analysis.manual.relation.instance.ServiceInstanceRelationServerSideMetrics; @@ -54,8 +52,6 @@ import org.apache.skywalking.oap.server.storage.plugin.banyandb.BanyanDBStorageC import org.apache.skywalking.oap.server.storage.plugin.banyandb.MetadataRegistry; import org.apache.skywalking.oap.server.storage.plugin.banyandb.stream.AbstractBanyanDBDAO; -import static java.util.Objects.nonNull; - public class BanyanDBTopologyQueryDAO extends AbstractBanyanDBDAO implements ITopologyQueryDAO { public BanyanDBTopologyQueryDAO(final BanyanDBStorageClient client) { @@ -110,25 +106,16 @@ public class BanyanDBTopologyQueryDAO extends AbstractBanyanDBDAO implements ITo List queryServiceRelation(Duration duration, QueryBuilder queryBuilder, DetectPoint detectPoint) throws IOException { - long startTB = 0; - long endTB = 0; - if (nonNull(duration)) { - startTB = duration.getStartTimeBucketInSec(); - endTB = duration.getEndTimeBucketInSec(); - } - TimestampRange timestampRange = null; - if (startTB > 0 && endTB > 0) { - timestampRange = new TimestampRange(TimeBucket.getTimestamp(startTB), TimeBucket.getTimestamp(endTB)); - } + final boolean isColdStage = duration != null && duration.isColdStage(); final String modelName = detectPoint == DetectPoint.SERVER ? ServiceRelationServerSideMetrics.INDEX_NAME : ServiceRelationClientSideMetrics.INDEX_NAME; MetadataRegistry.Schema schema = MetadataRegistry.INSTANCE.findMetadata(modelName, duration.getStep()); - MeasureQueryResponse resp = queryDebuggable(schema, + MeasureQueryResponse resp = queryDebuggable(isColdStage, schema, ImmutableSet.of( ServiceRelationClientSideMetrics.COMPONENT_IDS, Metrics.ENTITY_ID ), - Collections.emptySet(), timestampRange, queryBuilder + Collections.emptySet(), getTimestampRange(duration), queryBuilder ); if (resp.size() == 0) { return Collections.emptyList(); @@ -193,24 +180,15 @@ public class BanyanDBTopologyQueryDAO extends AbstractBanyanDBDAO implements ITo List queryInstanceRelation(Duration duration, QueryBuilder queryBuilder, DetectPoint detectPoint) throws IOException { - long startTB = 0; - long endTB = 0; - if (nonNull(duration)) { - startTB = duration.getStartTimeBucketInSec(); - endTB = duration.getEndTimeBucketInSec(); - } - TimestampRange timestampRange = null; - if (startTB > 0 && endTB > 0) { - timestampRange = new TimestampRange(TimeBucket.getTimestamp(startTB), TimeBucket.getTimestamp(endTB)); - } + final boolean isColdStage = duration != null && duration.isColdStage(); final String modelName = detectPoint == DetectPoint.SERVER ? ServiceInstanceRelationServerSideMetrics.INDEX_NAME : ServiceInstanceRelationClientSideMetrics.INDEX_NAME; MetadataRegistry.Schema schema = MetadataRegistry.INSTANCE.findMetadata(modelName, duration.getStep()); - MeasureQueryResponse resp = queryDebuggable(schema, + MeasureQueryResponse resp = queryDebuggable(isColdStage, schema, ImmutableSet.of( Metrics.ENTITY_ID ), - Collections.emptySet(), timestampRange, queryBuilder + Collections.emptySet(), getTimestampRange(duration), queryBuilder ); if (resp.size() == 0) { return Collections.emptyList(); @@ -259,22 +237,13 @@ public class BanyanDBTopologyQueryDAO extends AbstractBanyanDBDAO implements ITo List queryEndpointRelation(Duration duration, QueryBuilder queryBuilder, DetectPoint detectPoint) throws IOException { - long startTB = 0; - long endTB = 0; - if (nonNull(duration)) { - startTB = duration.getStartTimeBucketInSec(); - endTB = duration.getEndTimeBucketInSec(); - } - TimestampRange timestampRange = null; - if (startTB > 0 && endTB > 0) { - timestampRange = new TimestampRange(TimeBucket.getTimestamp(startTB), TimeBucket.getTimestamp(endTB)); - } + final boolean isColdStage = duration != null && duration.isColdStage(); MetadataRegistry.Schema schema = MetadataRegistry.INSTANCE.findMetadata(EndpointRelationServerSideMetrics.INDEX_NAME, duration.getStep()); - MeasureQueryResponse resp = queryDebuggable(schema, + MeasureQueryResponse resp = queryDebuggable(isColdStage, schema, ImmutableSet.of( Metrics.ENTITY_ID ), - Collections.emptySet(), timestampRange, queryBuilder + Collections.emptySet(), getTimestampRange(duration), queryBuilder ); if (resp.size() == 0) { return Collections.emptyList(); @@ -292,23 +261,14 @@ public class BanyanDBTopologyQueryDAO extends AbstractBanyanDBDAO implements ITo List queryProcessRelation(Duration duration, String serviceInstanceId, DetectPoint detectPoint) throws IOException { - long startTB = 0; - long endTB = 0; - if (nonNull(duration)) { - startTB = duration.getStartTimeBucketInSec(); - endTB = duration.getEndTimeBucketInSec(); - } - TimestampRange timestampRange = null; - if (startTB > 0 && endTB > 0) { - timestampRange = new TimestampRange(TimeBucket.getTimestamp(startTB), TimeBucket.getTimestamp(endTB)); - } + final boolean isColdStage = duration != null && duration.isColdStage(); final String modelName = detectPoint == DetectPoint.SERVER ? ProcessRelationServerSideMetrics.INDEX_NAME : ProcessRelationClientSideMetrics.INDEX_NAME; // process relation only has minute data MetadataRegistry.Schema schema = MetadataRegistry.INSTANCE.findMetadata(modelName, DownSampling.Minute); - MeasureQueryResponse resp = queryDebuggable(schema, + MeasureQueryResponse resp = queryDebuggable(isColdStage, schema, ImmutableSet.of(Metrics.ENTITY_ID, ProcessRelationClientSideMetrics.COMPONENT_ID), - Collections.emptySet(), timestampRange, new QueryBuilder() { + Collections.emptySet(), getTimestampRange(duration), new QueryBuilder() { @Override protected void apply(MeasureQuery query) { query.and(eq(ProcessRelationServerSideMetrics.SERVICE_INSTANCE_ID, serviceInstanceId)); diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/AbstractBanyanDBDAO.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/AbstractBanyanDBDAO.java index 9f6cef7b1b..6be527421e 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/AbstractBanyanDBDAO.java +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/AbstractBanyanDBDAO.java @@ -20,6 +20,7 @@ package org.apache.skywalking.oap.server.storage.plugin.banyandb.stream; import com.google.gson.Gson; import java.util.Objects; +import javax.annotation.Nullable; import org.apache.skywalking.banyandb.model.v1.BanyandbModel; import org.apache.skywalking.banyandb.v1.client.AbstractCriteria; import org.apache.skywalking.banyandb.v1.client.AbstractQuery; @@ -36,12 +37,14 @@ import org.apache.skywalking.banyandb.v1.client.TopNQuery; import org.apache.skywalking.banyandb.v1.client.TopNQueryResponse; import org.apache.skywalking.banyandb.v1.client.Trace; import org.apache.skywalking.oap.server.core.query.input.AttrCondition; +import org.apache.skywalking.oap.server.core.query.input.Duration; import org.apache.skywalking.oap.server.core.query.type.KeyValue; import org.apache.skywalking.oap.server.core.query.type.debugging.DebuggingSpan; import org.apache.skywalking.oap.server.core.query.type.debugging.DebuggingTraceContext; import org.apache.skywalking.oap.server.core.storage.AbstractDAO; import org.apache.skywalking.oap.server.library.util.CollectionUtils; import org.apache.skywalking.oap.server.storage.plugin.banyandb.BanyanDBStorageClient; +import org.apache.skywalking.oap.server.storage.plugin.banyandb.BanyanDBStorageConfig; import org.apache.skywalking.oap.server.storage.plugin.banyandb.MetadataRegistry; import java.io.IOException; import java.time.Instant; @@ -63,11 +66,17 @@ public abstract class AbstractBanyanDBDAO extends AbstractDAO tags, QueryBuilder builder) throws IOException { - return this.query(streamModelName, tags, null, builder); + protected StreamQueryResponse query(boolean isColdStage, + String streamModelName, + Set tags, + QueryBuilder builder) throws IOException { + return this.query(isColdStage, streamModelName, tags, null, builder); } - protected StreamQueryResponse query(String streamModelName, Set tags, TimestampRange timestampRange, + protected StreamQueryResponse query(boolean isColdStage, + String streamModelName, + Set tags, + TimestampRange timestampRange, QueryBuilder builder) throws IOException { MetadataRegistry.Schema schema = MetadataRegistry.INSTANCE.findRecordMetadata(streamModelName); if (schema == null) { @@ -79,6 +88,9 @@ public abstract class AbstractBanyanDBDAO extends AbstractDAO tags, TimestampRange timestampRange, + protected StreamQueryResponse queryDebuggable(boolean isColdStage, + String modelName, + Set tags, + TimestampRange timestampRange, QueryBuilder queryBuilder) throws IOException { DebuggingTraceContext traceContext = DebuggingTraceContext.TRACE_CONTEXT.get(); DebuggingSpan span = null; @@ -105,10 +120,12 @@ public abstract class AbstractBanyanDBDAO extends AbstractDAO tags, Set fields, TimestampRange timestampRange, @@ -228,10 +249,12 @@ public abstract class AbstractBanyanDBDAO extends AbstractDAO tags, Set fields, QueryBuilder builder) throws IOException { - return query(schema, tags, fields, null, builder); + return query(isColdStage, schema, tags, fields, null, builder); } - protected MeasureQueryResponse query(MetadataRegistry.Schema schema, Set tags, Set fields, - TimestampRange timestampRange, QueryBuilder builder) throws IOException { + protected MeasureQueryResponse query(boolean isColdStage, + MetadataRegistry.Schema schema, + Set tags, + Set fields, + TimestampRange timestampRange, + QueryBuilder builder) throws IOException { if (schema == null) { throw new IllegalArgumentException("measure is not registered"); } @@ -263,6 +291,9 @@ public abstract class AbstractBanyanDBDAO extends AbstractDAO 0 && endTimeMillis > 0) { + tsRange = new TimestampRange(startTimeMillis, endTimeMillis); + } + + return tsRange; + } } diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBAlarmQueryDAO.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBAlarmQueryDAO.java index 417a692e5f..c50a5d1f70 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBAlarmQueryDAO.java +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBAlarmQueryDAO.java @@ -23,9 +23,7 @@ import org.apache.skywalking.banyandb.v1.client.AbstractQuery; import org.apache.skywalking.banyandb.v1.client.RowEntity; import org.apache.skywalking.banyandb.v1.client.StreamQuery; import org.apache.skywalking.banyandb.v1.client.StreamQueryResponse; -import org.apache.skywalking.banyandb.v1.client.TimestampRange; import org.apache.skywalking.oap.server.core.alarm.AlarmRecord; -import org.apache.skywalking.oap.server.core.analysis.TimeBucket; import org.apache.skywalking.oap.server.core.analysis.manual.searchtag.Tag; import org.apache.skywalking.oap.server.core.query.input.Duration; import org.apache.skywalking.oap.server.core.query.type.AlarmMessage; @@ -57,15 +55,9 @@ public class BanyanDBAlarmQueryDAO extends AbstractBanyanDBDAO implements IAlarm @Override public Alarms getAlarm(Integer scopeId, String keyword, int limit, int from, Duration duration, List tags) throws IOException { - long startTB = duration.getStartTimeBucketInSec(); - long endTB = duration.getEndTimeBucketInSec(); - TimestampRange tsRange = null; - if (startTB > 0 && endTB > 0) { - tsRange = new TimestampRange(TimeBucket.getTimestamp(startTB), TimeBucket.getTimestamp(endTB)); - } - - StreamQueryResponse resp = query(AlarmRecord.INDEX_NAME, TAGS, - tsRange, + final boolean isColdStage = duration != null && duration.isColdStage(); + StreamQueryResponse resp = query(isColdStage, AlarmRecord.INDEX_NAME, TAGS, + getTimestampRange(duration), new QueryBuilder() { @Override public void apply(StreamQuery query) { diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBAsyncProfilerTaskLogQueryDAO.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBAsyncProfilerTaskLogQueryDAO.java index cb066b722a..8fcf708db1 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBAsyncProfilerTaskLogQueryDAO.java +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBAsyncProfilerTaskLogQueryDAO.java @@ -54,7 +54,7 @@ public class BanyanDBAsyncProfilerTaskLogQueryDAO extends AbstractBanyanDBDAO im @Override public List getTaskLogList() throws IOException { - StreamQueryResponse resp = query(AsyncProfilerTaskLogRecord.INDEX_NAME, TAGS, + StreamQueryResponse resp = query(false, AsyncProfilerTaskLogRecord.INDEX_NAME, TAGS, new QueryBuilder() { @Override public void apply(StreamQuery query) { diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBAsyncProfilerTaskQueryDAO.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBAsyncProfilerTaskQueryDAO.java index 1b478398c0..aaf9d453b1 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBAsyncProfilerTaskQueryDAO.java +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBAsyncProfilerTaskQueryDAO.java @@ -70,7 +70,7 @@ public class BanyanDBAsyncProfilerTaskQueryDAO extends AbstractBanyanDBDAO imple if (endTimeBucket != null) { endTS = TimeBucket.getTimestamp(endTimeBucket); } - StreamQueryResponse resp = query(AsyncProfilerTaskRecord.INDEX_NAME, TAGS, new TimestampRange(startTS, endTS), + StreamQueryResponse resp = query(false, AsyncProfilerTaskRecord.INDEX_NAME, TAGS, new TimestampRange(startTS, endTS), new QueryBuilder() { @Override protected void apply(StreamQuery query) { @@ -96,7 +96,7 @@ public class BanyanDBAsyncProfilerTaskQueryDAO extends AbstractBanyanDBDAO imple @Override public AsyncProfilerTask getById(String id) throws IOException { - StreamQueryResponse resp = query(AsyncProfilerTaskRecord.INDEX_NAME, TAGS, + StreamQueryResponse resp = query(false, AsyncProfilerTaskRecord.INDEX_NAME, TAGS, new QueryBuilder() { @Override protected void apply(StreamQuery query) { diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBBrowserLogQueryDAO.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBBrowserLogQueryDAO.java index 1733953db8..4e55824861 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBBrowserLogQueryDAO.java +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBBrowserLogQueryDAO.java @@ -22,8 +22,6 @@ import com.google.common.collect.ImmutableSet; import org.apache.skywalking.banyandb.v1.client.RowEntity; import org.apache.skywalking.banyandb.v1.client.StreamQuery; import org.apache.skywalking.banyandb.v1.client.StreamQueryResponse; -import org.apache.skywalking.banyandb.v1.client.TimestampRange; -import org.apache.skywalking.oap.server.core.analysis.TimeBucket; import org.apache.skywalking.oap.server.core.browser.manual.errorlog.BrowserErrorLogRecord; import org.apache.skywalking.oap.server.core.browser.source.BrowserErrorCategory; import org.apache.skywalking.oap.server.core.query.input.Duration; @@ -32,7 +30,6 @@ import org.apache.skywalking.oap.server.core.query.type.BrowserErrorLogs; import org.apache.skywalking.oap.server.core.storage.query.IBrowserLogQueryDAO; import org.apache.skywalking.oap.server.library.util.StringUtil; import org.apache.skywalking.oap.server.storage.plugin.banyandb.BanyanDBStorageClient; - import java.io.IOException; import java.util.Objects; import java.util.Set; @@ -53,15 +50,9 @@ public class BanyanDBBrowserLogQueryDAO extends AbstractBanyanDBDAO implements I public BrowserErrorLogs queryBrowserErrorLogs(String serviceId, String serviceVersionId, String pagePathId, BrowserErrorCategory category, Duration duration, int limit, int from) throws IOException { - long startSecondTB = duration.getStartTimeBucketInSec(); - long endSecondTB = duration.getEndTimeBucketInSec(); - TimestampRange tsRange = null; - if (startSecondTB > 0 && endSecondTB > 0) { - tsRange = new TimestampRange(TimeBucket.getTimestamp(startSecondTB), TimeBucket.getTimestamp(endSecondTB)); - } - - StreamQueryResponse resp = query(BrowserErrorLogRecord.INDEX_NAME, TAGS, - tsRange, new QueryBuilder() { + final boolean isColdStage = duration != null && duration.isColdStage(); + StreamQueryResponse resp = query(isColdStage, BrowserErrorLogRecord.INDEX_NAME, TAGS, + getTimestampRange(duration), new QueryBuilder() { @Override public void apply(StreamQuery query) { if (StringUtil.isNotEmpty(serviceId)) { diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBEBPFProfilingDataDAO.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBEBPFProfilingDataDAO.java index c6110c414a..19d8717fc8 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBEBPFProfilingDataDAO.java +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBEBPFProfilingDataDAO.java @@ -51,7 +51,7 @@ public class BanyanDBEBPFProfilingDataDAO extends AbstractBanyanDBDAO implements public List queryData(List scheduleIdList, long beginTime, long endTime) throws IOException { List records = new ArrayList<>(); for (final String scheduleId : scheduleIdList) { - StreamQueryResponse resp = query(EBPFProfilingDataRecord.INDEX_NAME, + StreamQueryResponse resp = query(false, EBPFProfilingDataRecord.INDEX_NAME, TAGS, new QueryBuilder() { @Override diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBEBPFProfilingTaskDAO.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBEBPFProfilingTaskDAO.java index 8880e34bd7..d601ffb1ce 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBEBPFProfilingTaskDAO.java +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBEBPFProfilingTaskDAO.java @@ -62,7 +62,7 @@ public class BanyanDBEBPFProfilingTaskDAO extends AbstractBanyanDBDAO implements long taskStartTime, long latestUpdateTime) throws IOException { List tasks = new ArrayList<>(); for (final String serviceId : serviceIdList) { - StreamQueryResponse resp = query(EBPFProfilingTaskRecord.INDEX_NAME, TAGS, + StreamQueryResponse resp = query(false, EBPFProfilingTaskRecord.INDEX_NAME, TAGS, new QueryBuilder() { @Override protected void apply(StreamQuery query) { @@ -85,7 +85,7 @@ public class BanyanDBEBPFProfilingTaskDAO extends AbstractBanyanDBDAO implements EBPFProfilingTriggerType triggerType, long taskStartTime, long latestUpdateTime) throws IOException { List tasks = new ArrayList<>(); for (final EBPFProfilingTargetType targetType : targetTypes) { - StreamQueryResponse resp = query(EBPFProfilingTaskRecord.INDEX_NAME, TAGS, + StreamQueryResponse resp = query(false, EBPFProfilingTaskRecord.INDEX_NAME, TAGS, new QueryBuilder() { @Override protected void apply(StreamQuery query) { @@ -111,7 +111,7 @@ public class BanyanDBEBPFProfilingTaskDAO extends AbstractBanyanDBDAO implements @Override public List getTaskRecord(String id) throws IOException { - StreamQueryResponse resp = query(EBPFProfilingTaskRecord.INDEX_NAME, TAGS, + StreamQueryResponse resp = query(false, EBPFProfilingTaskRecord.INDEX_NAME, TAGS, new QueryBuilder() { @Override protected void apply(StreamQuery query) { diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBJFRDataQueryDAO.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBJFRDataQueryDAO.java index 732130edac..d54cc5a293 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBJFRDataQueryDAO.java +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBJFRDataQueryDAO.java @@ -53,7 +53,7 @@ public class BanyanDBJFRDataQueryDAO extends AbstractBanyanDBDAO implements IJFR if (StringUtil.isBlank(taskId) || StringUtil.isBlank(eventType)) { return new ArrayList<>(); } - StreamQueryResponse resp = query(JFRProfilingDataRecord.INDEX_NAME, TAGS, + StreamQueryResponse resp = query(false, JFRProfilingDataRecord.INDEX_NAME, TAGS, new QueryBuilder() { @Override protected void apply(StreamQuery query) { diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBLogQueryDAO.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBLogQueryDAO.java index bd731c9564..7a4cfbfc49 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBLogQueryDAO.java +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBLogQueryDAO.java @@ -22,9 +22,7 @@ import com.google.common.collect.ImmutableSet; import org.apache.skywalking.banyandb.v1.client.RowEntity; import org.apache.skywalking.banyandb.v1.client.StreamQuery; import org.apache.skywalking.banyandb.v1.client.StreamQueryResponse; -import org.apache.skywalking.banyandb.v1.client.TimestampRange; import org.apache.skywalking.oap.server.core.analysis.IDManager; -import org.apache.skywalking.oap.server.core.analysis.TimeBucket; import org.apache.skywalking.oap.server.core.analysis.manual.log.AbstractLogRecord; import org.apache.skywalking.oap.server.core.analysis.manual.log.LogRecord; import org.apache.skywalking.oap.server.core.analysis.manual.searchtag.Tag; @@ -38,15 +36,12 @@ import org.apache.skywalking.oap.server.core.storage.query.ILogQueryDAO; import org.apache.skywalking.oap.server.library.util.CollectionUtils; import org.apache.skywalking.oap.server.library.util.StringUtil; import org.apache.skywalking.oap.server.storage.plugin.banyandb.BanyanDBStorageClient; - import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Objects; import java.util.Set; -import static java.util.Objects.nonNull; - /** * {@link org.apache.skywalking.oap.server.core.analysis.manual.log.LogRecord} is a stream */ @@ -72,12 +67,7 @@ public class BanyanDBLogQueryDAO extends AbstractBanyanDBDAO implements ILogQuer TraceScopeCondition relatedTrace, Order queryOrder, int from, int limit, Duration duration, List tags, List keywordsOfContent, List excludingKeywordsOfContent) throws IOException { - long startTB = 0; - long endTB = 0; - if (nonNull(duration)) { - startTB = duration.getStartTimeBucketInSec(); - endTB = duration.getEndTimeBucketInSec(); - } + final boolean isColdStage = duration != null && duration.isColdStage(); final QueryBuilder query = new QueryBuilder() { @Override public void apply(StreamQuery query) { @@ -113,12 +103,7 @@ public class BanyanDBLogQueryDAO extends AbstractBanyanDBDAO implements ILogQuer } }; - TimestampRange tsRange = null; - if (startTB > 0 && endTB > 0) { - tsRange = new TimestampRange(TimeBucket.getTimestamp(startTB), TimeBucket.getTimestamp(endTB)); - } - - StreamQueryResponse resp = queryDebuggable(LogRecord.INDEX_NAME, TAGS, tsRange, query); + StreamQueryResponse resp = queryDebuggable(isColdStage, LogRecord.INDEX_NAME, TAGS, getTimestampRange(duration), query); Logs logs = new Logs(); diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBProfileTaskLogQueryDAO.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBProfileTaskLogQueryDAO.java index 709ce72009..420c0b5b99 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBProfileTaskLogQueryDAO.java +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBProfileTaskLogQueryDAO.java @@ -50,7 +50,7 @@ public class BanyanDBProfileTaskLogQueryDAO extends AbstractBanyanDBDAO implemen @Override public List getTaskLogList() throws IOException { - StreamQueryResponse resp = query(ProfileTaskLogRecord.INDEX_NAME, TAGS, + StreamQueryResponse resp = query(false, ProfileTaskLogRecord.INDEX_NAME, TAGS, new QueryBuilder() { @Override public void apply(StreamQuery query) { diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBProfileTaskQueryDAO.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBProfileTaskQueryDAO.java index 3d35cd693c..040db07a5e 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBProfileTaskQueryDAO.java +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBProfileTaskQueryDAO.java @@ -67,7 +67,7 @@ public class BanyanDBProfileTaskQueryDAO extends AbstractBanyanDBDAO implements if (endTimeBucket != null) { endTS = TimeBucket.getTimestamp(endTimeBucket); } - StreamQueryResponse resp = query(ProfileTaskRecord.INDEX_NAME, TAGS, new TimestampRange(startTS, endTS), + StreamQueryResponse resp = query(false, ProfileTaskRecord.INDEX_NAME, TAGS, new TimestampRange(startTS, endTS), new QueryBuilder() { @Override protected void apply(StreamQuery query) { @@ -101,7 +101,7 @@ public class BanyanDBProfileTaskQueryDAO extends AbstractBanyanDBDAO implements @Override public ProfileTask getById(String id) throws IOException { - StreamQueryResponse resp = query(ProfileTaskRecord.INDEX_NAME, TAGS, + StreamQueryResponse resp = query(false, ProfileTaskRecord.INDEX_NAME, TAGS, new QueryBuilder() { @Override protected void apply(StreamQuery query) { diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBProfileThreadSnapshotQueryDAO.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBProfileThreadSnapshotQueryDAO.java index 573ac72959..337ec9f2d5 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBProfileThreadSnapshotQueryDAO.java +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBProfileThreadSnapshotQueryDAO.java @@ -79,7 +79,7 @@ public class BanyanDBProfileThreadSnapshotQueryDAO extends AbstractBanyanDBDAO i @Override public List queryProfiledSegmentIdList(String taskId) throws IOException { - StreamQueryResponse resp = query(ProfileThreadSnapshotRecord.INDEX_NAME, + StreamQueryResponse resp = query(false, ProfileThreadSnapshotRecord.INDEX_NAME, TAGS_BASIC, new QueryBuilder() { @Override @@ -115,7 +115,7 @@ public class BanyanDBProfileThreadSnapshotQueryDAO extends AbstractBanyanDBDAO i @Override public List queryRecords(String segmentId, int minSequence, int maxSequence) throws IOException { - StreamQueryResponse resp = query(ProfileThreadSnapshotRecord.INDEX_NAME, + StreamQueryResponse resp = query(false, ProfileThreadSnapshotRecord.INDEX_NAME, TAGS_ALL, new QueryBuilder() { @Override @@ -136,7 +136,7 @@ public class BanyanDBProfileThreadSnapshotQueryDAO extends AbstractBanyanDBDAO i } private int querySequenceWithAgg(AggType aggType, String segmentId, long start, long end) throws IOException { - StreamQueryResponse resp = query(ProfileThreadSnapshotRecord.INDEX_NAME, + StreamQueryResponse resp = query(false, ProfileThreadSnapshotRecord.INDEX_NAME, TAGS_ALL, new TimestampRange(start, end), new QueryBuilder() { @Override diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBSpanAttachedEventQueryDAO.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBSpanAttachedEventQueryDAO.java index e745c114fb..74e625870e 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBSpanAttachedEventQueryDAO.java +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBSpanAttachedEventQueryDAO.java @@ -19,12 +19,14 @@ package org.apache.skywalking.oap.server.storage.plugin.banyandb.stream; import com.google.common.collect.ImmutableSet; +import javax.annotation.Nullable; import org.apache.skywalking.banyandb.v1.client.AbstractQuery; import org.apache.skywalking.banyandb.v1.client.RowEntity; import org.apache.skywalking.banyandb.v1.client.StreamQuery; import org.apache.skywalking.banyandb.v1.client.StreamQueryResponse; import org.apache.skywalking.oap.server.core.analysis.manual.spanattach.SpanAttachedEventRecord; import org.apache.skywalking.oap.server.core.analysis.manual.spanattach.SpanAttachedEventTraceType; +import org.apache.skywalking.oap.server.core.query.input.Duration; import org.apache.skywalking.oap.server.core.storage.query.ISpanAttachedEventQueryDAO; import org.apache.skywalking.oap.server.storage.plugin.banyandb.BanyanDBConverter; import org.apache.skywalking.oap.server.storage.plugin.banyandb.BanyanDBStorageClient; @@ -54,8 +56,11 @@ public class BanyanDBSpanAttachedEventQueryDAO extends AbstractBanyanDBDAO imple } @Override - public List querySpanAttachedEvents(SpanAttachedEventTraceType type, List traceIds) throws IOException { - final StreamQueryResponse resp = queryDebuggable(SpanAttachedEventRecord.INDEX_NAME, TAGS, null, new QueryBuilder() { + public List querySpanAttachedEvents(SpanAttachedEventTraceType type, List traceIds, @Nullable Duration duration) throws IOException { + final boolean isColdStage = duration != null && duration.isColdStage(); + final StreamQueryResponse resp = queryDebuggable( + isColdStage, SpanAttachedEventRecord.INDEX_NAME, TAGS, getTimestampRange(duration), + new QueryBuilder() { @Override protected void apply(StreamQuery query) { query.and(in(SpanAttachedEventRecord.RELATED_TRACE_ID, traceIds)); diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBTraceQueryDAO.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBTraceQueryDAO.java index bb8c3b4271..c402065519 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBTraceQueryDAO.java +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBTraceQueryDAO.java @@ -20,14 +20,13 @@ package org.apache.skywalking.oap.server.storage.plugin.banyandb.stream; import com.google.common.base.Strings; import com.google.common.collect.ImmutableSet; +import javax.annotation.Nullable; import org.apache.skywalking.banyandb.v1.client.AbstractQuery; import org.apache.skywalking.banyandb.v1.client.Element; import org.apache.skywalking.banyandb.v1.client.RowEntity; import org.apache.skywalking.banyandb.v1.client.StreamQuery; import org.apache.skywalking.banyandb.v1.client.StreamQueryResponse; -import org.apache.skywalking.banyandb.v1.client.TimestampRange; import org.apache.skywalking.oap.server.core.analysis.IDManager; -import org.apache.skywalking.oap.server.core.analysis.TimeBucket; import org.apache.skywalking.oap.server.core.analysis.manual.searchtag.Tag; import org.apache.skywalking.oap.server.core.analysis.manual.segment.SegmentRecord; import org.apache.skywalking.oap.server.core.query.input.Duration; @@ -49,8 +48,6 @@ import java.util.Collections; import java.util.List; import java.util.Set; -import static java.util.Objects.nonNull; - public class BanyanDBTraceQueryDAO extends AbstractBanyanDBDAO implements ITraceQueryDAO { private static final Set BASIC_TAGS = ImmutableSet.of(SegmentRecord.TRACE_ID, SegmentRecord.IS_ERROR, @@ -80,12 +77,7 @@ public class BanyanDBTraceQueryDAO extends AbstractBanyanDBDAO implements ITrace @Override public TraceBrief queryBasicTraces(Duration duration, long minDuration, long maxDuration, String serviceId, String serviceInstanceId, String endpointId, String traceId, int limit, int from, TraceState traceState, QueryOrder queryOrder, List tags) throws IOException { - long startSecondTB = 0; - long endSecondTB = 0; - if (nonNull(duration)) { - startSecondTB = duration.getStartTimeBucketInSec(); - endSecondTB = duration.getEndTimeBucketInSec(); - } + final boolean isColdStage = duration != null && duration.isColdStage(); final QueryBuilder q = new QueryBuilder() { @Override public void apply(StreamQuery query) { @@ -145,15 +137,9 @@ public class BanyanDBTraceQueryDAO extends AbstractBanyanDBDAO implements ITrace } }; - TimestampRange tsRange = null; - - if (startSecondTB > 0 && endSecondTB > 0) { - tsRange = new TimestampRange(TimeBucket.getTimestamp(startSecondTB), TimeBucket.getTimestamp(endSecondTB)); - } - - StreamQueryResponse resp = queryDebuggable(SegmentRecord.INDEX_NAME, - BASIC_TAGS, - tsRange, q); + StreamQueryResponse resp = queryDebuggable(isColdStage, SegmentRecord.INDEX_NAME, + BASIC_TAGS, + getTimestampRange(duration), q); TraceBrief traceBrief = new TraceBrief(); @@ -182,9 +168,10 @@ public class BanyanDBTraceQueryDAO extends AbstractBanyanDBDAO implements ITrace } @Override - public List queryByTraceId(String traceId) throws IOException { - StreamQueryResponse resp = queryDebuggable(SegmentRecord.INDEX_NAME, TAGS, null, - new QueryBuilder() { + public List queryByTraceId(String traceId, @Nullable Duration duration) throws IOException { + final boolean isColdStage = duration != null && duration.isColdStage(); + StreamQueryResponse resp = queryDebuggable(isColdStage, SegmentRecord.INDEX_NAME, TAGS, getTimestampRange(duration), + new QueryBuilder() { @Override public void apply(StreamQuery query) { query.and(eq(SegmentRecord.TRACE_ID, traceId)); @@ -195,8 +182,9 @@ public class BanyanDBTraceQueryDAO extends AbstractBanyanDBDAO implements ITrace } @Override - public List queryBySegmentIdList(List segmentIdList) throws IOException { - StreamQueryResponse resp = query(SegmentRecord.INDEX_NAME, TAGS, + public List queryBySegmentIdList(List segmentIdList, @Nullable Duration duration) throws IOException { + final boolean isColdStage = duration != null && duration.isColdStage(); + StreamQueryResponse resp = query(isColdStage, SegmentRecord.INDEX_NAME, TAGS, getTimestampRange(duration), new QueryBuilder() { @Override public void apply(StreamQuery query) { @@ -208,8 +196,9 @@ public class BanyanDBTraceQueryDAO extends AbstractBanyanDBDAO implements ITrace } @Override - public List queryByTraceIdWithInstanceId(List traceIdList, List instanceIdList) throws IOException { - StreamQueryResponse resp = query(SegmentRecord.INDEX_NAME, TAGS, + public List queryByTraceIdWithInstanceId(List traceIdList, List instanceIdList, @Nullable Duration duration) throws IOException { + final boolean isColdStage = duration != null && duration.isColdStage(); + StreamQueryResponse resp = query(isColdStage, SegmentRecord.INDEX_NAME, TAGS, getTimestampRange(duration), new QueryBuilder() { @Override public void apply(StreamQuery query) { diff --git a/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/SpanAttachedEventEsDAO.java b/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/SpanAttachedEventEsDAO.java index 2706f90d11..91be71ff8f 100644 --- a/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/SpanAttachedEventEsDAO.java +++ b/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/SpanAttachedEventEsDAO.java @@ -18,6 +18,7 @@ package org.apache.skywalking.oap.server.storage.plugin.elasticsearch.query; +import javax.annotation.Nullable; import org.apache.skywalking.library.elasticsearch.requests.search.BoolQueryBuilder; import org.apache.skywalking.library.elasticsearch.requests.search.Query; import org.apache.skywalking.library.elasticsearch.requests.search.Search; @@ -27,6 +28,7 @@ import org.apache.skywalking.library.elasticsearch.requests.search.Sort; import org.apache.skywalking.library.elasticsearch.response.search.SearchHit; import org.apache.skywalking.oap.server.core.analysis.manual.spanattach.SpanAttachedEventRecord; import org.apache.skywalking.oap.server.core.analysis.manual.spanattach.SpanAttachedEventTraceType; +import org.apache.skywalking.oap.server.core.query.input.Duration; import org.apache.skywalking.oap.server.core.storage.query.ISpanAttachedEventQueryDAO; import org.apache.skywalking.oap.server.library.client.elasticsearch.ElasticSearchClient; import org.apache.skywalking.oap.server.library.client.elasticsearch.ElasticSearchScroller; @@ -54,7 +56,7 @@ public class SpanAttachedEventEsDAO extends EsDAO implements ISpanAttachedEventQ } @Override - public List querySpanAttachedEvents(SpanAttachedEventTraceType type, List traceIds) throws IOException { + public List querySpanAttachedEvents(SpanAttachedEventTraceType type, List traceIds, @Nullable Duration duration) throws IOException { final String index = IndexController.LogicIndicesRegister.getPhysicalTableName(SpanAttachedEventRecord.INDEX_NAME); final BoolQueryBuilder query = Query.bool(); diff --git a/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/TraceQueryEsDAO.java b/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/TraceQueryEsDAO.java index dba4d3fe7b..8153c4b140 100644 --- a/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/TraceQueryEsDAO.java +++ b/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/TraceQueryEsDAO.java @@ -23,6 +23,7 @@ import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.List; +import javax.annotation.Nullable; import org.apache.skywalking.library.elasticsearch.requests.search.BoolQueryBuilder; import org.apache.skywalking.library.elasticsearch.requests.search.Query; import org.apache.skywalking.library.elasticsearch.requests.search.RangeQueryBuilder; @@ -178,7 +179,7 @@ public class TraceQueryEsDAO extends EsDAO implements ITraceQueryDAO { } @Override - public List queryByTraceId(String traceId) throws IOException { + public List queryByTraceId(String traceId, @Nullable Duration duration) throws IOException { final String index = IndexController.LogicIndicesRegister.getPhysicalTableName(SegmentRecord.INDEX_NAME); @@ -196,7 +197,7 @@ public class TraceQueryEsDAO extends EsDAO implements ITraceQueryDAO { } @Override - public List queryBySegmentIdList(List segmentIdList) throws IOException { + public List queryBySegmentIdList(List segmentIdList, @Nullable Duration duration) throws IOException { final String index = IndexController.LogicIndicesRegister.getPhysicalTableName(SegmentRecord.INDEX_NAME); @@ -212,7 +213,7 @@ public class TraceQueryEsDAO extends EsDAO implements ITraceQueryDAO { } @Override - public List queryByTraceIdWithInstanceId(List traceIdList, List instanceIdList) throws IOException { + public List queryByTraceIdWithInstanceId(List traceIdList, List instanceIdList, @Nullable Duration duration) throws IOException { final String index = IndexController.LogicIndicesRegister.getPhysicalTableName(SegmentRecord.INDEX_NAME); diff --git a/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/zipkin/ZipkinQueryEsDAO.java b/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/zipkin/ZipkinQueryEsDAO.java index ef583b4382..c455ddbf53 100644 --- a/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/zipkin/ZipkinQueryEsDAO.java +++ b/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/zipkin/ZipkinQueryEsDAO.java @@ -18,6 +18,7 @@ package org.apache.skywalking.oap.server.storage.plugin.elasticsearch.query.zipkin; +import javax.annotation.Nullable; import org.apache.skywalking.library.elasticsearch.requests.search.BoolQueryBuilder; import org.apache.skywalking.library.elasticsearch.requests.search.Query; import org.apache.skywalking.library.elasticsearch.requests.search.Search; @@ -129,7 +130,7 @@ public class ZipkinQueryEsDAO extends EsDAO implements IZipkinQueryDAO { } @Override - public List getTrace(final String traceId) { + public List getTrace(final String traceId, @Nullable final Duration duration) { String index = IndexController.LogicIndicesRegister.getPhysicalTableName(ZipkinSpanRecord.INDEX_NAME); BoolQueryBuilder query = Query.bool().must(Query.term(ZipkinSpanRecord.TRACE_ID, traceId)); SearchBuilder search = Search.builder().query(query).size(SCROLLING_BATCH_SIZE); @@ -216,11 +217,11 @@ public class ZipkinQueryEsDAO extends EsDAO implements IZipkinQueryDAO { traceIds.add((String) idBucket.get("key")); } } - return getTraces(traceIds); + return getTraces(traceIds, duration); } @Override - public List> getTraces(final Set traceIds) { + public List> getTraces(final Set traceIds, @Nullable final Duration duration) { String index = IndexController.LogicIndicesRegister.getPhysicalTableName(ZipkinSpanRecord.INDEX_NAME); BoolQueryBuilder query = Query.bool().must(Query.terms(ZipkinSpanRecord.TRACE_ID, new ArrayList<>(traceIds))); SearchBuilder search = Search.builder().query(query).sort(ZipkinSpanRecord.TIMESTAMP_MILLIS, Sort.Order.DESC) diff --git a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/common/dao/JDBCSpanAttachedEventQueryDAO.java b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/common/dao/JDBCSpanAttachedEventQueryDAO.java index 3680ee2560..5c1d2b1337 100644 --- a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/common/dao/JDBCSpanAttachedEventQueryDAO.java +++ b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/common/dao/JDBCSpanAttachedEventQueryDAO.java @@ -18,10 +18,12 @@ package org.apache.skywalking.oap.server.storage.plugin.jdbc.common.dao; +import javax.annotation.Nullable; import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; import org.apache.skywalking.oap.server.core.analysis.manual.spanattach.SpanAttachedEventRecord; import org.apache.skywalking.oap.server.core.analysis.manual.spanattach.SpanAttachedEventTraceType; +import org.apache.skywalking.oap.server.core.query.input.Duration; import org.apache.skywalking.oap.server.core.storage.query.ISpanAttachedEventQueryDAO; import org.apache.skywalking.oap.server.library.client.jdbc.hikaricp.JDBCClient; import org.apache.skywalking.oap.server.library.util.StringUtil; @@ -44,7 +46,7 @@ public class JDBCSpanAttachedEventQueryDAO implements ISpanAttachedEventQueryDAO @Override @SneakyThrows - public List querySpanAttachedEvents(SpanAttachedEventTraceType type, List traceIds) { + public List querySpanAttachedEvents(SpanAttachedEventTraceType type, List traceIds, @Nullable Duration duration) { final var tables = tableHelper.getTablesWithinTTL(SpanAttachedEventRecord.INDEX_NAME); final var results = new ArrayList(); diff --git a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/common/dao/JDBCTraceQueryDAO.java b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/common/dao/JDBCTraceQueryDAO.java index faf37a5164..3eeea047e2 100644 --- a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/common/dao/JDBCTraceQueryDAO.java +++ b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/common/dao/JDBCTraceQueryDAO.java @@ -19,6 +19,7 @@ package org.apache.skywalking.oap.server.storage.plugin.jdbc.common.dao; import com.google.common.base.Strings; +import javax.annotation.Nullable; import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; @@ -232,7 +233,7 @@ public class JDBCTraceQueryDAO implements ITraceQueryDAO { @Override @SneakyThrows - public List queryByTraceId(String traceId) throws IOException { + public List queryByTraceId(String traceId, @Nullable Duration duration) throws IOException { final var tables = tableHelper.getTablesWithinTTL(SegmentRecord.INDEX_NAME); final var segmentRecords = new ArrayList(); @@ -253,7 +254,7 @@ public class JDBCTraceQueryDAO implements ITraceQueryDAO { @SneakyThrows @Override - public List queryBySegmentIdList(List segmentIdList) throws IOException { + public List queryBySegmentIdList(List segmentIdList, @Nullable Duration duration) throws IOException { final var tables = tableHelper.getTablesWithinTTL(SegmentRecord.INDEX_NAME); final var segmentRecords = new ArrayList(); final ArrayList conditions = new ArrayList<>(); @@ -278,7 +279,7 @@ public class JDBCTraceQueryDAO implements ITraceQueryDAO { @SneakyThrows @Override - public List queryByTraceIdWithInstanceId(List traceIdList, List instanceIdList) throws IOException { + public List queryByTraceIdWithInstanceId(List traceIdList, List instanceIdList, @Nullable Duration duration) throws IOException { final var tables = tableHelper.getTablesWithinTTL(SegmentRecord.INDEX_NAME); final var segmentRecords = new ArrayList(); final ArrayList conditions = new ArrayList<>(); diff --git a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/common/dao/JDBCZipkinQueryDAO.java b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/common/dao/JDBCZipkinQueryDAO.java index bfead65fc7..23b1ca8e1e 100644 --- a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/common/dao/JDBCZipkinQueryDAO.java +++ b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/common/dao/JDBCZipkinQueryDAO.java @@ -21,6 +21,7 @@ package org.apache.skywalking.oap.server.storage.plugin.jdbc.common.dao; import com.google.gson.Gson; import com.google.gson.JsonElement; import com.google.gson.JsonObject; +import javax.annotation.Nullable; import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; import org.apache.skywalking.oap.server.core.query.input.Duration; @@ -147,7 +148,7 @@ public class JDBCZipkinQueryDAO implements IZipkinQueryDAO { @Override @SneakyThrows - public List getTrace(final String traceId) { + public List getTrace(final String traceId, @Nullable final Duration duration) { final var tables = tableHelper.getTablesWithinTTL(ZipkinSpanRecord.INDEX_NAME); final var trace = new ArrayList(); @@ -264,12 +265,12 @@ public class JDBCZipkinQueryDAO implements IZipkinQueryDAO { }, condition.toArray(new Object[0])); } - return getTraces(traceIds); + return getTraces(traceIds, duration); } @Override @SneakyThrows - public List> getTraces(final Set traceIds) { + public List> getTraces(final Set traceIds, final Duration duration) { if (CollectionUtils.isEmpty(traceIds)) { return new ArrayList<>(); } diff --git a/oap-server/server-tools/profile-exporter/tool-profile-snapshot-bootstrap/src/main/java/org/apache/skywalking/oap/server/tool/profile/exporter/ProfiledBasicInfo.java b/oap-server/server-tools/profile-exporter/tool-profile-snapshot-bootstrap/src/main/java/org/apache/skywalking/oap/server/tool/profile/exporter/ProfiledBasicInfo.java index c9a824443d..6e5f6e6456 100644 --- a/oap-server/server-tools/profile-exporter/tool-profile-snapshot-bootstrap/src/main/java/org/apache/skywalking/oap/server/tool/profile/exporter/ProfiledBasicInfo.java +++ b/oap-server/server-tools/profile-exporter/tool-profile-snapshot-bootstrap/src/main/java/org/apache/skywalking/oap/server/tool/profile/exporter/ProfiledBasicInfo.java @@ -88,7 +88,7 @@ public class ProfiledBasicInfo { profiledSegment.setDuration(segment.getLatency()); // query spans - Trace trace = traceQueryService.queryTrace(config.getTraceId()); + Trace trace = traceQueryService.queryTrace(config.getTraceId(), null); List profiledSegmentSpans = trace.getSpans().stream().filter(s -> Objects.equals(s.getSegmentId(), segmentId)).collect(Collectors.toList()); if (CollectionUtils.isEmpty(profiledSegmentSpans)) { throw new IllegalArgumentException("Current segment cannot found any span"); diff --git a/oap-server/server-tools/profile-exporter/tool-profile-snapshot-bootstrap/src/test/java/org/apache/skywalking/oap/server/tool/profile/exporter/test/ProfileTraceDAO.java b/oap-server/server-tools/profile-exporter/tool-profile-snapshot-bootstrap/src/test/java/org/apache/skywalking/oap/server/tool/profile/exporter/test/ProfileTraceDAO.java index 2c5639c2a5..4d4784af28 100644 --- a/oap-server/server-tools/profile-exporter/tool-profile-snapshot-bootstrap/src/test/java/org/apache/skywalking/oap/server/tool/profile/exporter/test/ProfileTraceDAO.java +++ b/oap-server/server-tools/profile-exporter/tool-profile-snapshot-bootstrap/src/test/java/org/apache/skywalking/oap/server/tool/profile/exporter/test/ProfileTraceDAO.java @@ -21,6 +21,7 @@ package org.apache.skywalking.oap.server.tool.profile.exporter.test; import java.io.IOException; import java.util.ArrayList; import java.util.List; +import javax.annotation.Nullable; import org.apache.skywalking.apm.network.language.agent.v3.SegmentObject; import org.apache.skywalking.apm.network.language.agent.v3.SpanObject; import org.apache.skywalking.oap.server.core.analysis.manual.searchtag.Tag; @@ -56,7 +57,7 @@ public class ProfileTraceDAO implements ITraceQueryDAO { } @Override - public List queryByTraceId(String traceId) throws IOException { + public List queryByTraceId(String traceId, @Nullable Duration duration) throws IOException { final ArrayList segments = new ArrayList<>(); final SegmentRecord segment = new SegmentRecord(); segments.add(segment); @@ -80,7 +81,7 @@ public class ProfileTraceDAO implements ITraceQueryDAO { } @Override - public List queryBySegmentIdList(List segmentIdList) throws IOException { + public List queryBySegmentIdList(List segmentIdList, @Nullable Duration duration) throws IOException { final ArrayList segments = new ArrayList<>(); final SegmentRecord segment = new SegmentRecord(); segments.add(segment); @@ -104,7 +105,7 @@ public class ProfileTraceDAO implements ITraceQueryDAO { } @Override - public List queryByTraceIdWithInstanceId(List traceIdList, List instanceIdList) throws IOException { + public List queryByTraceIdWithInstanceId(List traceIdList, List instanceIdList, @Nullable Duration duration) throws IOException { return null; } diff --git a/oap-server/server-tools/profile-exporter/tool-profile-snapshot-bootstrap/src/test/java/org/apache/skywalking/oap/server/tool/profile/exporter/test/SpanAttachedEventQueryDAO.java b/oap-server/server-tools/profile-exporter/tool-profile-snapshot-bootstrap/src/test/java/org/apache/skywalking/oap/server/tool/profile/exporter/test/SpanAttachedEventQueryDAO.java index 975899508d..fa73191cc8 100644 --- a/oap-server/server-tools/profile-exporter/tool-profile-snapshot-bootstrap/src/test/java/org/apache/skywalking/oap/server/tool/profile/exporter/test/SpanAttachedEventQueryDAO.java +++ b/oap-server/server-tools/profile-exporter/tool-profile-snapshot-bootstrap/src/test/java/org/apache/skywalking/oap/server/tool/profile/exporter/test/SpanAttachedEventQueryDAO.java @@ -18,8 +18,10 @@ package org.apache.skywalking.oap.server.tool.profile.exporter.test; +import javax.annotation.Nullable; import org.apache.skywalking.oap.server.core.analysis.manual.spanattach.SpanAttachedEventRecord; import org.apache.skywalking.oap.server.core.analysis.manual.spanattach.SpanAttachedEventTraceType; +import org.apache.skywalking.oap.server.core.query.input.Duration; import org.apache.skywalking.oap.server.core.storage.query.ISpanAttachedEventQueryDAO; import java.io.IOException; @@ -27,7 +29,7 @@ import java.util.List; public class SpanAttachedEventQueryDAO implements ISpanAttachedEventQueryDAO { @Override - public List querySpanAttachedEvents(SpanAttachedEventTraceType type, List traceIds) throws IOException { + public List querySpanAttachedEvents(SpanAttachedEventTraceType type, List traceIds, @Nullable Duration duration) throws IOException { return null; } -} \ No newline at end of file +} diff --git a/test/e2e-v2/script/env b/test/e2e-v2/script/env index 29b803a4df..91fa59b005 100644 --- a/test/e2e-v2/script/env +++ b/test/e2e-v2/script/env @@ -22,7 +22,7 @@ SW_AGENT_PYTHON_COMMIT=c76a6ec51a478ac91abb20ec8f22a99b8d4d6a58 SW_AGENT_CLIENT_JS_COMMIT=af0565a67d382b683c1dbd94c379b7080db61449 SW_AGENT_CLIENT_JS_TEST_COMMIT=4f1eb1dcdbde3ec4a38534bf01dded4ab5d2f016 SW_KUBERNETES_COMMIT_SHA=6fe5e6f0d3b7686c6be0457733e825ee68cb9b35 -SW_ROVER_COMMIT=4c0cb8429a96f190ea30eac1807008d523c749c3 +SW_ROVER_COMMIT=738b1a42fe4941e0b4e6f5816403437cf572708f SW_BANYANDB_COMMIT=458041a561b0acc1f2ed37690df2ce753b791283 SW_AGENT_PHP_COMMIT=3192c553002707d344bd6774cfab5bc61f67a1d3 SW_PREDICTOR_COMMIT=54a0197654a3781a6f73ce35146c712af297c994