From 933998fe3fdf472a38281b75aba17bae4897247b Mon Sep 17 00:00:00 2001 From: wankai123 Date: Mon, 12 Jan 2026 14:49:57 +0800 Subject: [PATCH 1/5] `BrowserErrorLog`, OAP Server generated UUID to replace the original client side ID --- apm-protocol/apm-network/src/main/proto | 2 +- docs/en/changes/changes.md | 3 ++- .../parser/errorlog/BrowserErrorLogDecorator.java | 12 +++++++++++- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/apm-protocol/apm-network/src/main/proto b/apm-protocol/apm-network/src/main/proto index 050b6eb2941e..cf9cc443c5e9 160000 --- a/apm-protocol/apm-network/src/main/proto +++ b/apm-protocol/apm-network/src/main/proto @@ -1 +1 @@ -Subproject commit 050b6eb2941e197e9aed118263f2fa23d44265f8 +Subproject commit cf9cc443c5e9a61078b24ba01ecc41f42526115f diff --git a/docs/en/changes/changes.md b/docs/en/changes/changes.md index 9a496b0c61a9..7bac6703919f 100644 --- a/docs/en/changes/changes.md +++ b/docs/en/changes/changes.md @@ -17,8 +17,9 @@ * Add support for OpenSearch/ElasticSearch client certificate authentication. * Fix BanyanDB logs paging query. * Replace BanyanDB Java client with native implementation. -* Remove `bydb.dependencies.properties` and set the compatible BanyanDB API version number in `${SW_STORAGE_BANYANDB_COMPATIBLE_SERVER_API_VERSIONS}` +* Remove `bydb.dependencies.properties` and set the compatible BanyanDB API version number in `${SW_STORAGE_BANYANDB_COMPATIBLE_SERVER_API_VERSIONS}`. * Fix trace profiling query time range condition. +* `BrowserErrorLog`, OAP Server generated UUID to replace the original client side ID, because Browser scripts can't guarantee generated IDs are globally unique. #### UI * Fix the missing icon in new native trace view. diff --git a/oap-server/server-receiver-plugin/skywalking-browser-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/browser/provider/parser/errorlog/BrowserErrorLogDecorator.java b/oap-server/server-receiver-plugin/skywalking-browser-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/browser/provider/parser/errorlog/BrowserErrorLogDecorator.java index 56785fd46328..0cf34a8ce144 100644 --- a/oap-server/server-receiver-plugin/skywalking-browser-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/browser/provider/parser/errorlog/BrowserErrorLogDecorator.java +++ b/oap-server/server-receiver-plugin/skywalking-browser-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/browser/provider/parser/errorlog/BrowserErrorLogDecorator.java @@ -17,18 +17,28 @@ package org.apache.skywalking.oap.server.receiver.browser.provider.parser.errorlog; +import java.util.UUID; import lombok.RequiredArgsConstructor; import org.apache.skywalking.apm.network.language.agent.v3.BrowserErrorLog; import org.apache.skywalking.apm.network.language.agent.v3.ErrorCategory; +import org.apache.skywalking.oap.server.library.util.StringUtil; @RequiredArgsConstructor public class BrowserErrorLogDecorator { private boolean isOrigin = true; private final BrowserErrorLog errorLog; private BrowserErrorLog.Builder builder; + private String id; + /** + * Browser scripts can't guarantee generated IDs are globally unique + * OAP Server generated UUID to replace the original client side ID. + */ public String getUniqueId() { - return isOrigin ? errorLog.getUniqueId() : builder.getUniqueId(); + if (StringUtil.isBlank(id)) { + id = UUID.randomUUID().toString(); + } + return id; } public String getService() { From 24cb7399eb9a13925a38ac133d29a8f1785aa293 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=B4=E6=99=9F=20Wu=20Sheng?= Date: Mon, 12 Jan 2026 20:32:31 +0800 Subject: [PATCH 2/5] Update env --- test/e2e-v2/script/env | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/e2e-v2/script/env b/test/e2e-v2/script/env index 43eaf1247c29..4b6b9432fc58 100644 --- a/test/e2e-v2/script/env +++ b/test/e2e-v2/script/env @@ -18,7 +18,7 @@ SW_AGENT_SATELLITE_COMMIT=ea27a3f4e126a24775fe12e2aa2695bcb23d99c3 SW_AGENT_NGINX_LUA_COMMIT=c3cee4841798a147d83b96a10914d4ac0e11d0aa SW_AGENT_NODEJS_COMMIT=4f9a91dad3dfd8cfe5ba8f7bd06b39e11eb5e65e SW_AGENT_GO_COMMIT=afa75a3cc8c31f142102443af6164b825d63d8fc -SW_AGENT_PYTHON_COMMIT=c76a6ec51a478ac91abb20ec8f22a99b8d4d6a58 +SW_AGENT_PYTHON_COMMIT=b91ebc46010ba6a46b251d4df54190c3b64f2db8 SW_AGENT_CLIENT_JS_COMMIT=f08776d909eb1d9bc79c600e493030651b97e491 SW_AGENT_CLIENT_JS_TEST_COMMIT=4f1eb1dcdbde3ec4a38534bf01dded4ab5d2f016 SW_KUBERNETES_COMMIT_SHA=6fe5e6f0d3b7686c6be0457733e825ee68cb9b35 From 3ec3a7d0b3eff791b8c58eb2ad1e6b192fa45a0a Mon Sep 17 00:00:00 2001 From: wankai123 Date: Tue, 13 Jan 2026 18:17:28 +0800 Subject: [PATCH 3/5] fix e2e --- test/e2e-v2/cases/browser/docker-compose.yml | 1 + test/e2e-v2/cases/browser/es/docker-compose.yml | 1 + .../cases/browser/es/es-sharding/docker-compose.yml | 1 + test/e2e-v2/cases/python/Dockerfile.python | 8 +++++++- test/e2e-v2/cases/python/docker-compose.yml | 3 +++ 5 files changed, 13 insertions(+), 1 deletion(-) diff --git a/test/e2e-v2/cases/browser/docker-compose.yml b/test/e2e-v2/cases/browser/docker-compose.yml index 29946365b237..b9bbecf655c6 100644 --- a/test/e2e-v2/cases/browser/docker-compose.yml +++ b/test/e2e-v2/cases/browser/docker-compose.yml @@ -46,6 +46,7 @@ services: environment: SW_AGENT_COLLECTOR_BACKEND_SERVICES: oap:11800 SW_AGENT_LOGGING_LEVEL: DEBUG + SW_AGENT_NAME: provider-py volumes: - ./docker/provider.py:/entrypoint.py depends_on: diff --git a/test/e2e-v2/cases/browser/es/docker-compose.yml b/test/e2e-v2/cases/browser/es/docker-compose.yml index c231a833ee03..f52b49b809b0 100644 --- a/test/e2e-v2/cases/browser/es/docker-compose.yml +++ b/test/e2e-v2/cases/browser/es/docker-compose.yml @@ -58,6 +58,7 @@ services: environment: SW_AGENT_COLLECTOR_BACKEND_SERVICES: oap:11800 SW_AGENT_LOGGING_LEVEL: DEBUG + SW_AGENT_NAME: provider-py volumes: - ./../docker/provider.py:/entrypoint.py depends_on: diff --git a/test/e2e-v2/cases/browser/es/es-sharding/docker-compose.yml b/test/e2e-v2/cases/browser/es/es-sharding/docker-compose.yml index 14633b1562ce..59c9830f0eb6 100644 --- a/test/e2e-v2/cases/browser/es/es-sharding/docker-compose.yml +++ b/test/e2e-v2/cases/browser/es/es-sharding/docker-compose.yml @@ -59,6 +59,7 @@ services: environment: SW_AGENT_COLLECTOR_BACKEND_SERVICES: oap:11800 SW_AGENT_LOGGING_LEVEL: DEBUG + SW_AGENT_NAME: provider-py volumes: - ./../../docker/provider.py:/entrypoint.py depends_on: diff --git a/test/e2e-v2/cases/python/Dockerfile.python b/test/e2e-v2/cases/python/Dockerfile.python index 1b31a1df62b1..06de6f78f6ed 100644 --- a/test/e2e-v2/cases/python/Dockerfile.python +++ b/test/e2e-v2/cases/python/Dockerfile.python @@ -22,7 +22,13 @@ RUN git clone https://github.com/apache/skywalking-python.git $(pwd) RUN git reset --hard ${SW_AGENT_PYTHON_COMMIT} && git submodule update --init -RUN make setup install +RUN < Date: Wed, 14 Jan 2026 10:10:20 +0800 Subject: [PATCH 4/5] fix e2e --- test/e2e-v2/cases/browser/expected/trace-detail.yml | 2 +- .../cases/browser/expected/trace-v2-detail.yml | 2 +- test/e2e-v2/cases/python/docker-compose.yml | 6 +++--- .../python/expected/service-instance-consumer-py.yml | 12 +++++++++++- .../expected/service-instance-provider-py-kafka.yml | 12 +++++++++++- .../python/expected/service-instance-provider-py.yml | 12 +++++++++++- .../cases/python/expected/trace-test-detail.yml | 4 ++-- 7 files changed, 40 insertions(+), 10 deletions(-) diff --git a/test/e2e-v2/cases/browser/expected/trace-detail.yml b/test/e2e-v2/cases/browser/expected/trace-detail.yml index 2350d844a463..29cfca2957c2 100644 --- a/test/e2e-v2/cases/browser/expected/trace-detail.yml +++ b/test/e2e-v2/cases/browser/expected/trace-detail.yml @@ -64,7 +64,7 @@ spans: value: POST - key: http.url value: http://provider:9091/info - - key: http.status.code + - key: http.status_code value: "200" logs: [] attachedevents: [] diff --git a/test/e2e-v2/cases/browser/expected/trace-v2-detail.yml b/test/e2e-v2/cases/browser/expected/trace-v2-detail.yml index f3c263b25ef0..ce5918d30e84 100644 --- a/test/e2e-v2/cases/browser/expected/trace-v2-detail.yml +++ b/test/e2e-v2/cases/browser/expected/trace-v2-detail.yml @@ -71,7 +71,7 @@ traces: value: POST - key: http.url value: http://provider:9091/info - - key: http.status.code + - key: http.status_code value: "200" logs: [] attachedevents: [] diff --git a/test/e2e-v2/cases/python/docker-compose.yml b/test/e2e-v2/cases/python/docker-compose.yml index 23da4e3e642d..ff3a4236aaa6 100644 --- a/test/e2e-v2/cases/python/docker-compose.yml +++ b/test/e2e-v2/cases/python/docker-compose.yml @@ -107,7 +107,7 @@ services: - 9091 environment: SW_AGENT_COLLECTOR_BACKEND_SERVICES: oap:11800 - SW_AGENT_INSTANCE: provider-py-instance + SW_AGENT_INSTANCE_NAME: provider-py-instance SW_AGENT_NAME: provider-py depends_on: oap: @@ -143,7 +143,7 @@ services: - 9089 environment: SW_AGENT_COLLECTOR_BACKEND_SERVICES: oap:11800 - SW_AGENT_INSTANCE: provider-py-kafka-instance + SW_AGENT_INSTANCE_NAME: provider-py-kafka-instance SW_KAFKA_REPORTER_BOOTSTRAP_SERVERS: broker-a:9092,broker-b:9092 SW_AGENT_NAME: provider-py-kafka depends_on: @@ -170,7 +170,7 @@ services: environment: SW_AGENT_COLLECTOR_BACKEND_SERVICES: oap:11800 PROVIDER_URL: http://medium-java:9092/users - SW_AGENT_INSTANCE: consumer-py-instance + SW_AGENT_INSTANCE_NAME: consumer-py-instance SW_AGENT_NAME: consumer-py depends_on: oap: diff --git a/test/e2e-v2/cases/python/expected/service-instance-consumer-py.yml b/test/e2e-v2/cases/python/expected/service-instance-consumer-py.yml index f2099eba1e4c..a077cc294a82 100644 --- a/test/e2e-v2/cases/python/expected/service-instance-consumer-py.yml +++ b/test/e2e-v2/cases/python/expected/service-instance-consumer-py.yml @@ -20,8 +20,18 @@ name: consumer-py-instance attributes: {{- contains .attributes }} + - name: OS Name + value: {{ notEmpty .value }} + - name: Process No. + value: {{ notEmpty .value }} + - name: hostname + value: {{ notEmpty .value }} + - name: python_implementation + value: {{ notEmpty .value }} + - name: python_version + value: {{ notEmpty .value }} - name: ipv4s - value: "" + value: {{ notEmpty .value }} {{- end}} language: PYTHON instanceuuid: {{ b64enc "consumer-py" }}.1_{{ b64enc "consumer-py-instance" }} diff --git a/test/e2e-v2/cases/python/expected/service-instance-provider-py-kafka.yml b/test/e2e-v2/cases/python/expected/service-instance-provider-py-kafka.yml index c200a55bf855..8d6e1f47fab9 100644 --- a/test/e2e-v2/cases/python/expected/service-instance-provider-py-kafka.yml +++ b/test/e2e-v2/cases/python/expected/service-instance-provider-py-kafka.yml @@ -20,8 +20,18 @@ name: provider-py-kafka-instance attributes: {{- contains .attributes }} + - name: OS Name + value: {{ notEmpty .value }} + - name: Process No. + value: {{ notEmpty .value }} + - name: hostname + value: {{ notEmpty .value }} + - name: python_implementation + value: {{ notEmpty .value }} + - name: python_version + value: {{ notEmpty .value }} - name: ipv4s - value: "" + value: {{ notEmpty .value }} {{- end}} language: PYTHON instanceuuid: {{ b64enc "provider-py-kafka" }}.1_{{ b64enc "provider-py-kafka-instance" }} diff --git a/test/e2e-v2/cases/python/expected/service-instance-provider-py.yml b/test/e2e-v2/cases/python/expected/service-instance-provider-py.yml index 15364c1b38d0..087d91c048a5 100644 --- a/test/e2e-v2/cases/python/expected/service-instance-provider-py.yml +++ b/test/e2e-v2/cases/python/expected/service-instance-provider-py.yml @@ -20,8 +20,18 @@ name: provider-py-instance attributes: {{- contains .attributes }} + - name: OS Name + value: {{ notEmpty .value }} + - name: Process No. + value: {{ notEmpty .value }} + - name: hostname + value: {{ notEmpty .value }} + - name: python_implementation + value: {{ notEmpty .value }} + - name: python_version + value: {{ notEmpty .value }} - name: ipv4s - value: "" + value: {{ notEmpty .value }} {{- end}} language: PYTHON instanceuuid: {{ b64enc "provider-py" }}.1_{{ b64enc "provider-py-instance" }} diff --git a/test/e2e-v2/cases/python/expected/trace-test-detail.yml b/test/e2e-v2/cases/python/expected/trace-test-detail.yml index 6aa46e384286..14f26f8b7314 100644 --- a/test/e2e-v2/cases/python/expected/trace-test-detail.yml +++ b/test/e2e-v2/cases/python/expected/trace-test-detail.yml @@ -66,7 +66,7 @@ traces: value: POST - key: http.url value: http://medium-java:9092/users - - key: http.status.code + - key: http.status_code value: "200" {{- end }} logs: [] @@ -174,7 +174,7 @@ traces: value: POST - key: http.url value: http://provider-py-kafka:9089/users - - key: http.status.code + - key: http.status_code value: "200" {{- end }} logs: [] From d32441f7674bae94ee6c0b5a5931a06f75e5d7d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=B4=E6=99=9F=20Wu=20Sheng?= Date: Wed, 14 Jan 2026 11:10:38 +0800 Subject: [PATCH 5/5] Update changes.md --- docs/en/changes/changes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/en/changes/changes.md b/docs/en/changes/changes.md index 6dcb9192ddfd..187d736e8779 100644 --- a/docs/en/changes/changes.md +++ b/docs/en/changes/changes.md @@ -20,7 +20,7 @@ * Remove `bydb.dependencies.properties` and set the compatible BanyanDB API version number in `${SW_STORAGE_BANYANDB_COMPATIBLE_SERVER_API_VERSIONS}`. * Fix trace profiling query time range condition. * Fix BanyanDB time range overflow in profile thread snapshot query. -* `BrowserErrorLog`, OAP Server generated UUID to replace the original client side ID, because Browser scripts can't guarantee generated IDs are globally unique.>>>>>>> master +* `BrowserErrorLog`, OAP Server generated UUID to replace the original client side ID, because Browser scripts can't guarantee generated IDs are globally unique. * MQE: fix multiple labeled metric query and ensure no results are returned if no label value combinations match. #### UI