This is an automated email from the ASF dual-hosted git repository.
zqr10159 pushed a commit to branch 2.0.0
in repository https://gitbox.apache.org/repos/asf/hertzbeat.git
The following commit(s) were added to refs/heads/2.0.0 by this push:
new 165a33a470 Scope trace service by entity id
165a33a470 is described below
commit 165a33a470553c6932588720a64ee7b9bfb5c715
Author: Logic <[email protected]>
AuthorDate: Tue Jun 9 20:36:52 2026 +0800
Scope trace service by entity id
---
.../service/impl/EntityTraceQueryServiceImpl.java | 26 ++++++++++++++--------
.../impl/EntityTraceQueryServiceImplTest.java | 1 +
2 files changed, 18 insertions(+), 9 deletions(-)
diff --git
a/hertzbeat-observability/src/main/java/org/apache/hertzbeat/observability/traces/service/impl/EntityTraceQueryServiceImpl.java
b/hertzbeat-observability/src/main/java/org/apache/hertzbeat/observability/traces/service/impl/EntityTraceQueryServiceImpl.java
index f79b368557..716fbfab39 100644
---
a/hertzbeat-observability/src/main/java/org/apache/hertzbeat/observability/traces/service/impl/EntityTraceQueryServiceImpl.java
+++
b/hertzbeat-observability/src/main/java/org/apache/hertzbeat/observability/traces/service/impl/EntityTraceQueryServiceImpl.java
@@ -55,6 +55,7 @@ import
org.apache.hertzbeat.common.observability.dto.trace.TraceSpanEventDto;
import org.apache.hertzbeat.common.observability.dto.trace.TraceSpanLinkDto;
import org.apache.hertzbeat.common.observability.dto.trace.TraceSpanNodeDto;
import
org.apache.hertzbeat.observability.ingestion.enricher.OtlpCorrelationEnricher;
+import
org.apache.hertzbeat.observability.ingestion.semantic.OtlpResourceSemanticAttributes;
import
org.apache.hertzbeat.observability.traces.service.EntityTraceQueryService;
import org.apache.hertzbeat.warehouse.repository.TraceQueryRepository;
import org.springframework.data.domain.Page;
@@ -1148,20 +1149,27 @@ public class EntityTraceQueryServiceImpl implements
EntityTraceQueryService {
}
private Map<String, Set<String>>
canonicalIdentityValues(ObservedEntityContext entityContext) {
- if (entityContext == null ||
CollectionUtils.isEmpty(entityContext.getIdentities())) {
+ if (entityContext == null) {
return Collections.emptyMap();
}
Map<String, Set<String>> values = new LinkedHashMap<>();
- for (EntityIdentity identity : entityContext.getIdentities()) {
- String key = trimText(identity.getIdentityKey());
- String value = trimText(identity.getIdentityValue());
- if (!StringUtils.hasText(key) || !StringUtils.hasText(value)
- ||
!EntityCanonicalIdentityRegistry.isCanonicalOtelResourceKey(key)) {
- continue;
+ if (entityContext.getEntity() != null &&
entityContext.getEntity().getId() != null
+ && entityContext.getEntity().getId() > 0) {
+
values.computeIfAbsent(OtlpResourceSemanticAttributes.HERTZBEAT_ENTITY_ID,
ignored -> new LinkedHashSet<>())
+ .add(String.valueOf(entityContext.getEntity().getId()));
+ }
+ if (!CollectionUtils.isEmpty(entityContext.getIdentities())) {
+ for (EntityIdentity identity : entityContext.getIdentities()) {
+ String key = trimText(identity.getIdentityKey());
+ String value = trimText(identity.getIdentityValue());
+ if (!StringUtils.hasText(key) || !StringUtils.hasText(value)
+ ||
!EntityCanonicalIdentityRegistry.isCanonicalOtelResourceKey(key)) {
+ continue;
+ }
+ values.computeIfAbsent(key, ignored -> new
LinkedHashSet<>()).add(value);
}
- values.computeIfAbsent(key, ignored -> new
LinkedHashSet<>()).add(value);
}
- return values;
+ return values.isEmpty() ? Collections.emptyMap() : values;
}
private List<String> preferredSearchTerms(Map<String, Set<String>>
identityValues) {
diff --git
a/hertzbeat-observability/src/test/java/org/apache/hertzbeat/observability/traces/service/impl/EntityTraceQueryServiceImplTest.java
b/hertzbeat-observability/src/test/java/org/apache/hertzbeat/observability/traces/service/impl/EntityTraceQueryServiceImplTest.java
index a0084aa7bb..be2cec643e 100644
---
a/hertzbeat-observability/src/test/java/org/apache/hertzbeat/observability/traces/service/impl/EntityTraceQueryServiceImplTest.java
+++
b/hertzbeat-observability/src/test/java/org/apache/hertzbeat/observability/traces/service/impl/EntityTraceQueryServiceImplTest.java
@@ -343,6 +343,7 @@ class EntityTraceQueryServiceImplTest {
org.mockito.ArgumentMatchers.isNull(),
org.mockito.ArgumentMatchers.isNull(),
org.mockito.ArgumentMatchers.isNull(),
org.mockito.ArgumentMatchers.isNull(),
detailIdentityFilterCaptor.capture(), eq(false));
+ assertEquals(Set.of("1"),
detailIdentityFilterCaptor.getValue().get("hertzbeat.entity_id"));
assertEquals(Set.of("checkout-service"),
detailIdentityFilterCaptor.getValue().get("service.name"));
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]