From dd2484477c9ba17f45b54604038b2d1c647d1967 Mon Sep 17 00:00:00 2001 From: wusheng Date: Wed, 7 Dec 2016 09:46:53 +0800 Subject: [PATCH] Webui use register center to find routing server. and use searchClient to search traceId. Waiting for integration test. --- .../web/client/routing/SearchClient.java | 27 ++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/skywalking-webui/src/main/java/com/a/eye/skywalking/web/client/routing/SearchClient.java b/skywalking-webui/src/main/java/com/a/eye/skywalking/web/client/routing/SearchClient.java index 2b5089459..249574ec6 100644 --- a/skywalking-webui/src/main/java/com/a/eye/skywalking/web/client/routing/SearchClient.java +++ b/skywalking-webui/src/main/java/com/a/eye/skywalking/web/client/routing/SearchClient.java @@ -1,8 +1,13 @@ package com.a.eye.skywalking.web.client.routing; +import com.a.eye.skywalking.network.grpc.QueryTask; +import com.a.eye.skywalking.network.grpc.SearchResult; +import com.a.eye.skywalking.network.grpc.TraceId; import com.a.eye.skywalking.network.grpc.client.TraceSearchClient; +import com.a.eye.skywalking.web.dto.TraceNodeInfo; import com.a.eye.skywalking.web.dto.TraceNodesResult; +import java.util.List; import java.util.concurrent.ThreadLocalRandom; /** @@ -13,15 +18,31 @@ public class SearchClient { public SearchClient() { TraceSearchClient[] allSearchClients = RoutingServerWatcher.getAllSearchClient(); - + if ((allSearchClients.length == 0)) { + throw new RuntimeException("no active routing servers"); + } client = allSearchClients[ThreadLocalRandom.current().nextInt(0, allSearchClients.length)]; } public TraceNodesResult searchSpan(String traceId){ String[] traceIdSegments = traceId.split("."); + TraceNodesResult traceNodesResult = new TraceNodesResult(); if(traceIdSegments.length != 6){ - return new TraceNodesResult(); + return traceNodesResult; + } + + TraceId.Builder builder = TraceId.newBuilder(); + for (String traceIdSegment : traceIdSegments) { + builder.addSegments(Long.parseLong(traceIdSegment)); } - return new TraceNodesResult(); + + QueryTask.Builder queryTaskBuilder = QueryTask.newBuilder().setTraceId(builder.build()); + SearchResult result = client.search(queryTaskBuilder.build()); + + List traceNodes = traceNodesResult.getResult(); + result.getSpansList().forEach((span -> { + traceNodes.add(new TraceNodeInfo((span))); + })); + return traceNodesResult; } } -- GitLab