You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by wu...@apache.org on 2022/10/07 12:29:04 UTC

[skywalking] branch bug-fix created (now 90b3f1e8d2)

This is an automated email from the ASF dual-hosted git repository.

wusheng pushed a change to branch bug-fix
in repository https://gitbox.apache.org/repos/asf/skywalking.git


      at 90b3f1e8d2 Support skywalking-client-js report empty `service version` and `page path`

This branch includes the following new commits:

     new 90b3f1e8d2 Support skywalking-client-js report empty `service version` and `page path`

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[skywalking] 01/01: Support skywalking-client-js report empty `service version` and `page path`

Posted by wu...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

wusheng pushed a commit to branch bug-fix
in repository https://gitbox.apache.org/repos/asf/skywalking.git

commit 90b3f1e8d22e67bc1911b495f39b8e7599196d60
Author: Wu Sheng <wu...@foxmail.com>
AuthorDate: Fri Oct 7 20:28:48 2022 +0800

    Support skywalking-client-js report empty `service version` and `page path`
---
 docs/en/changes/changes.md                         | 15 ++++--
 .../performance/BrowserPerfDataDecorator.java      | 58 +++++++++++-----------
 .../parser/performance/PerfDataAnalyzer.java       | 13 +++++
 3 files changed, 52 insertions(+), 34 deletions(-)

diff --git a/docs/en/changes/changes.md b/docs/en/changes/changes.md
index 25db4ed4da..eb9cba8c25 100644
--- a/docs/en/changes/changes.md
+++ b/docs/en/changes/changes.md
@@ -20,15 +20,19 @@
   in `no-init` mode.
 * Make sure instance list ordered in TTL processor to avoid TTL timer never runs.
 * Support monitoring PostgreSQL slow SQLs.
-* [**Breaking Change**] Support sharding MySQL database instances and tables by [Shardingsphere-Proxy](https://shardingsphere.apache.org/document/current/en/overview/#shardingsphere-proxy).
-  SQL-Database requires removing tables `log_tag/segment_tag/zipkin_query` before OAP starts, if bump up from previous releases.
+* [**Breaking Change**] Support sharding MySQL database instances and tables
+  by [Shardingsphere-Proxy](https://shardingsphere.apache.org/document/current/en/overview/#shardingsphere-proxy).
+  SQL-Database requires removing tables `log_tag/segment_tag/zipkin_query` before OAP starts, if bump up from previous
+  releases.
 * Fix meter functions `avgHistogram`, `avgHistogramPercentile`, `avgLabeled`, `sumHistogram` having data conflict when
   downsampling.
 * Do sorting `readLabeledMetricsValues` result forcedly in case the storage(database) doesn't return data consistent
   with the parameter list.
-* Fix the wrong watch semantics in Kubernetes watchers, which causes heavy traffic to API server in some Kubernetes clusters,
+* Fix the wrong watch semantics in Kubernetes watchers, which causes heavy traffic to API server in some Kubernetes
+  clusters,
   we should use `Get State and Start at Most Recent` semantic instead of `Start at Exact`
-  because we don't need the changing history events, see https://kubernetes.io/docs/reference/using-api/api-concepts/#semantics-for-watch.
+  because we don't need the changing history events,
+  see https://kubernetes.io/docs/reference/using-api/api-concepts/#semantics-for-watch.
 * Unify query services and DAOs codes time range condition to `Duration`.
 * [**Breaking Change**]: Remove prometheus-fetcher plugin, please use OpenTelemetry to scrape Prometheus metrics and
   set up SkyWalking OpenTelemetry receiver instead.
@@ -39,6 +43,9 @@
   (explicit_bounds[i-1], +infinity) for i == size(explicit_bounds)
   ```
 * Add APISIX metrics monitoring
+* Support skywalking-client-js report empty `service version` and `page path` , set default version as `latest` and
+  default page path as `/`(root). Fix the
+  error `fetching data (/browser_app_page_pv0) : Can't split endpoint id into 2 parts`.
 
 #### UI
 
diff --git a/oap-server/server-receiver-plugin/skywalking-browser-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/browser/provider/parser/performance/BrowserPerfDataDecorator.java b/oap-server/server-receiver-plugin/skywalking-browser-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/browser/provider/parser/performance/BrowserPerfDataDecorator.java
index f486375902..119c6f3229 100644
--- a/oap-server/server-receiver-plugin/skywalking-browser-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/browser/provider/parser/performance/BrowserPerfDataDecorator.java
+++ b/oap-server/server-receiver-plugin/skywalking-browser-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/browser/provider/parser/performance/BrowserPerfDataDecorator.java
@@ -17,98 +17,96 @@
 
 package org.apache.skywalking.oap.server.receiver.browser.provider.parser.performance;
 
-import lombok.RequiredArgsConstructor;
 import org.apache.skywalking.apm.network.language.agent.v3.BrowserPerfData;
 
-@RequiredArgsConstructor
 public class BrowserPerfDataDecorator {
-    private boolean isOrigin = true;
-    private final BrowserPerfData browserPerfData;
     private BrowserPerfData.Builder builder;
 
+    public BrowserPerfDataDecorator(final BrowserPerfData browserPerfData) {
+        this.builder = browserPerfData.toBuilder();
+    }
+
     public String getService() {
-        return isOrigin ? browserPerfData.getService() : builder.getService();
+        return builder.getService();
     }
 
     public String getServiceVersion() {
-        return isOrigin ? browserPerfData.getServiceVersion() : builder.getServiceVersion();
+        return builder.getServiceVersion();
     }
 
     public long getTime() {
-        return isOrigin ? browserPerfData.getTime() : builder.getTime();
+        return builder.getTime();
     }
 
     public String getPagePath() {
-        return isOrigin ? browserPerfData.getPagePath() : builder.getPagePath();
+        return builder.getPagePath();
     }
 
     public int getRedirectTime() {
-        return isOrigin ? browserPerfData.getRedirectTime() : builder.getRedirectTime();
+        return builder.getRedirectTime();
     }
 
     public int getDnsTime() {
-        return isOrigin ? browserPerfData.getDnsTime() : builder.getDnsTime();
+        return builder.getDnsTime();
     }
 
     public int getTtfbTime() {
-        return isOrigin ? browserPerfData.getTtfbTime() : builder.getTtfbTime();
+        return builder.getTtfbTime();
     }
 
     public int getTcpTime() {
-        return isOrigin ? browserPerfData.getTcpTime() : builder.getTcpTime();
+        return builder.getTcpTime();
     }
 
     public int getTransTime() {
-        return isOrigin ? browserPerfData.getTransTime() : builder.getTransTime();
+        return builder.getTransTime();
     }
 
     public int getDomAnalysisTime() {
-        return isOrigin ? browserPerfData.getDomAnalysisTime() : builder.getDomAnalysisTime();
+        return builder.getDomAnalysisTime();
     }
 
     public int getFptTime() {
-        return isOrigin ? browserPerfData.getFptTime() : builder.getFptTime();
+        return builder.getFptTime();
     }
 
     public int getDomReadyTime() {
-        return isOrigin ? browserPerfData.getDomReadyTime() : builder.getDomReadyTime();
+        return builder.getDomReadyTime();
     }
 
     public int getLoadPageTime() {
-        return isOrigin ? browserPerfData.getLoadPageTime() : builder.getLoadPageTime();
+        return builder.getLoadPageTime();
     }
 
     public int getResTime() {
-        return isOrigin ? browserPerfData.getResTime() : builder.getResTime();
+        return builder.getResTime();
     }
 
     public int getSslTime() {
-        return isOrigin ? browserPerfData.getSslTime() : builder.getSslTime();
+        return builder.getSslTime();
     }
 
     public int getTtlTime() {
-        return isOrigin ? browserPerfData.getTtlTime() : builder.getTtlTime();
+        return builder.getTtlTime();
     }
 
     public int getFirstPackTime() {
-        return isOrigin ? browserPerfData.getFirstPackTime() : builder.getFirstPackTime();
+        return builder.getFirstPackTime();
     }
 
     public int getFmpTime() {
-        return isOrigin ? browserPerfData.getFmpTime() : builder.getFmpTime();
+        return builder.getFmpTime();
     }
 
     public void setTime(long time) {
-        if (isOrigin) {
-            toBuilder();
-        }
         builder.setTime(time);
     }
 
-    void toBuilder() {
-        if (isOrigin) {
-            this.isOrigin = false;
-            this.builder = browserPerfData.toBuilder();
-        }
+    public void setServiceVersion(String version) {
+        builder.setServiceVersion(version);
+    }
+
+    public void setPagePath(String pagePath) {
+        builder.setPagePath(pagePath);
     }
 }
diff --git a/oap-server/server-receiver-plugin/skywalking-browser-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/browser/provider/parser/performance/PerfDataAnalyzer.java b/oap-server/server-receiver-plugin/skywalking-browser-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/browser/provider/parser/performance/PerfDataAnalyzer.java
index f99a2e4cd9..f39a948025 100644
--- a/oap-server/server-receiver-plugin/skywalking-browser-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/browser/provider/parser/performance/PerfDataAnalyzer.java
+++ b/oap-server/server-receiver-plugin/skywalking-browser-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/browser/provider/parser/performance/PerfDataAnalyzer.java
@@ -23,6 +23,7 @@ import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.skywalking.apm.network.language.agent.v3.BrowserPerfData;
 import org.apache.skywalking.oap.server.library.module.ModuleManager;
+import org.apache.skywalking.oap.server.library.util.StringUtil;
 import org.apache.skywalking.oap.server.receiver.browser.provider.BrowserServiceModuleConfig;
 import org.apache.skywalking.oap.server.receiver.browser.provider.parser.performance.listener.PerfDataAnalysisListener;
 
@@ -36,12 +37,24 @@ public class PerfDataAnalyzer {
     private final List<PerfDataAnalysisListener> analysisListeners = new LinkedList<>();
 
     public void doAnalysis(BrowserPerfData browserPerfData) {
+        if (StringUtil.isBlank(browserPerfData.getService())) {
+            return;
+        }
+
         createAnalysisListeners();
 
         BrowserPerfDataDecorator decorator = new BrowserPerfDataDecorator(browserPerfData);
         // Use the server side current time.
         long nowMillis = System.currentTimeMillis();
         decorator.setTime(nowMillis);
+        if (StringUtil.isBlank(decorator.getServiceVersion())) {
+            // Set the default version as latest, considering it is running.
+            decorator.setServiceVersion("latest");
+        }
+        if (StringUtil.isBlank(decorator.getPagePath())) {
+            // Set the default page path as root(/).
+            decorator.setPagePath("/");
+        }
 
         notifyListener(decorator);