@Override public Span joinTrace(RpcContext carrier) { Map<String, String> attachments = carrier.getAttachments(); if (attachments.get(Span.TRACE_ID_NAME) == null) { // can't build a Span without trace id return null; } boolean skip = Span.SPAN_NOT_SAMPLED.equals(attachments.get(Span.SAMPLED_NAME)); long traceId = Span .hexToId(attachments.get(Span.TRACE_ID_NAME)); long spanId = attachments.get(Span.SPAN_ID_NAME) != null ? Span.hexToId(attachments.get(Span.SPAN_ID_NAME)) : this.random.nextLong(); return buildParentSpan(carrier, skip, traceId, spanId); }
String spanId = header.containsKey(TraceMessageHeaders.SPAN_ID_NAME) ? String.valueOf(header.get(TraceMessageHeaders.SPAN_ID_NAME)) : traceId; spanBuilder .traceIdHigh(traceId.length() == 32 ? Span.hexToId(traceId, 0) : 0) .traceId(Span.hexToId(traceId)) .spanId(Span.hexToId(spanId)); String processId = header.containsKey(TraceMessageHeaders.PROCESS_ID_NAME) ? String.valueOf(header.get(TraceMessageHeaders.PROCESS_ID_NAME)) : null; String spanName = header.containsKey(TraceMessageHeaders.SPAN_NAME_NAME) ? String.valueOf(header.get(TraceMessageHeaders.SPAN_NAME_NAME)) : null; spanBuilder.parent(Span.hexToId(parentId));
private Span buildParentSpan(RpcContext carrier, boolean skip, long traceId, long spanId) { Map<String, String> attachments = carrier.getAttachments(); SpanBuilder span = Span.builder().traceId(traceId).spanId(spanId); String processId = attachments.get(Span.PROCESS_ID_NAME); String parentName = attachments.get(Span.SPAN_NAME_NAME); if (StringUtils.hasText(parentName)) { span.name(parentName); } if (StringUtils.hasText(processId)) { span.processId(processId); } if (attachments.get(Span.PARENT_ID_NAME) != null) { span.parent(Span .hexToId(attachments.get(Span.PARENT_ID_NAME))); } span.remote(true); if (skip) { span.exportable(false); } return span.build(); } }
if(request.getAttachments().get(TraceMessageHeaders.TRACE_ID_NAME)!=null && !"".equals(request.getAttachments().get(TraceMessageHeaders.TRACE_ID_NAME))){ spanBuilder.traceId(Span.hexToId(request.getAttachments().get(TraceMessageHeaders.TRACE_ID_NAME))); spanBuilder.spanId(Span.hexToId(request.getAttachments().get(TraceMessageHeaders.SPAN_ID_NAME))); spanBuilder.exportable(Span.SPAN_SAMPLED.equals(request.getAttachments().get(TraceMessageHeaders.SAMPLED_NAME))); spanBuilder.processId(request.getAttachments().get(TraceMessageHeaders.PROCESS_ID_NAME)); spanBuilder.parent(Span.hexToId(request.getAttachments().get(TraceMessageHeaders.PARENT_ID_NAME))); spanBuilder.name(request.getAttachments().get(TraceMessageHeaders.SPAN_NAME_NAME)); spanBuilder.remote(true); }else if(request.getAttachments().get(Span.TRACE_ID_NAME)!=null && !"".equals(request.getAttachments().get(Span.TRACE_ID_NAME))){ spanBuilder.traceId(Span.hexToId(request.getAttachments().get(Span.TRACE_ID_NAME))); spanBuilder.spanId(Span.hexToId(request.getAttachments().get(Span.SPAN_ID_NAME))); spanBuilder.exportable(Span.SPAN_SAMPLED.equals(request.getAttachments().get(Span.SAMPLED_NAME))); spanBuilder.processId(request.getAttachments().get(Span.PROCESS_ID_NAME)); if(request.getAttachments().get(Span.PARENT_ID_NAME)!=null){ spanBuilder.parent(Span.hexToId(request.getAttachments().get(Span.PARENT_ID_NAME)));