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

Reply via email to