This is an automated email from the ASF dual-hosted git repository. wusheng pushed a commit to branch fix in repository https://gitbox.apache.org/repos/asf/skywalking.git
commit 6f47528b1d5ea9ce5bc01926006dd8ecce5642b9 Author: Wu Sheng <[email protected]> AuthorDate: Tue Dec 6 22:04:38 2022 +0800 Fix bugs caused by #10085. Metrics w/o time prefix in ID could be missed in the cache. --- .../skywalking/oap/server/core/analysis/MetricsExtension.java | 4 ++++ .../server/core/analysis/manual/searchtag/TagAutocompleteData.java | 5 ++++- .../oap/server/core/analysis/worker/MetricsPersistentWorker.java | 7 +++++++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/MetricsExtension.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/MetricsExtension.java index 368ea9094a..a07ec7ffcb 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/MetricsExtension.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/MetricsExtension.java @@ -44,6 +44,10 @@ public @interface MetricsExtension { * @return true means the ID of this metric entity would generate timestamp related ID, such as 20170128-serviceId. * If as false, then, ID would be like serviceId directly. This is typically used for metadata level metric, such as * {@link org.apache.skywalking.oap.server.core.analysis.manual.service.ServiceTraffic} + * + * @since 9.4.0 `return false` could mean `not completely relevant`. Such as + * {@link org.apache.skywalking.oap.server.core.analysis.manual.searchtag.TagAutocompleteData} + * uses 20221108-tag-value as key, but time bucket is still in minute dimensionality, for example 202211081200. */ boolean timeRelativeID() default false; } diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/searchtag/TagAutocompleteData.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/searchtag/TagAutocompleteData.java index 78c717f4ef..703697cee3 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/searchtag/TagAutocompleteData.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/searchtag/TagAutocompleteData.java @@ -36,7 +36,10 @@ import org.apache.skywalking.oap.server.core.storage.type.StorageBuilder; @Stream(name = TagAutocompleteData.INDEX_NAME, scopeId = DefaultScopeDefine.TAG_AUTOCOMPLETE, builder = TagAutocompleteData.Builder.class, processor = MetricsStreamProcessor.class) -@MetricsExtension(supportDownSampling = false, supportUpdate = false, timeRelativeID = true) +// timeRelativeID=false at here doesn't mean the ID is completely irrelevant with time bucket. +// TagAutocompleteData still uses the day(toTimeBucketInDay()) as ID prefix, +// to make this tag tip feature doesn't host too large scale data. +@MetricsExtension(supportDownSampling = false, supportUpdate = false, timeRelativeID = false) @EqualsAndHashCode(of = { "tagKey", "tagValue", diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/worker/MetricsPersistentWorker.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/worker/MetricsPersistentWorker.java index 8cff453a1d..fc0865a867 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/worker/MetricsPersistentWorker.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/worker/MetricsPersistentWorker.java @@ -367,6 +367,13 @@ public class MetricsPersistentWorker extends PersistenceWorker<Metrics> { return cached; } + // If the metrics do not have time bucket relative ID + // it is treated as high dimensionality metrics. + // Policy, always try load from the database when miss in the cache. + if (!model.isTimeRelativeID()) { + return null; + } + // When // (1) the time bucket of the server's latest stability status is provided // 1.1 the OAP has booted successfully
