@Override public TraceData getTraceData() { // try to extract single-header format String b3String = request.getHttpHeaderValue("b3"); if (b3String != null) { TraceData extracted = B3SingleFormat.parseB3SingleFormat(b3String); if (extracted != null) return extracted; } String sampled = request.getHttpHeaderValue(BraveHttpHeaders.Sampled.getName()); String parentSpanId = request.getHttpHeaderValue(BraveHttpHeaders.ParentSpanId.getName()); String traceId = request.getHttpHeaderValue(BraveHttpHeaders.TraceId.getName()); String spanId = request.getHttpHeaderValue(BraveHttpHeaders.SpanId.getName()); // Official sampled value is 1, though some old instrumentation send true Boolean parsedSampled = sampled != null ? sampled.equals("1") || sampled.equalsIgnoreCase("true") : null; if (traceId != null && spanId != null) { return TraceData.create(getSpanId(traceId, spanId, parentSpanId, parsedSampled)); } else if (parsedSampled == null) { return TraceData.EMPTY; } else if (parsedSampled) { return TraceData.SAMPLED; } else { return TraceData.NOT_SAMPLED; } }
@Override public TraceData getTraceData() { final String sampled = serverRequest.getHttpHeaderValue(BraveHttpHeaders.Sampled.getName()); if (sampled != null) { if (sampled.equals("0") || sampled.toLowerCase().equals("false")) { return TraceData.builder().sample(false).build(); } else { final String parentSpanId = serverRequest.getHttpHeaderValue(BraveHttpHeaders.ParentSpanId.getName()); final String traceId = serverRequest.getHttpHeaderValue(BraveHttpHeaders.TraceId.getName()); final String spanId = serverRequest.getHttpHeaderValue(BraveHttpHeaders.SpanId.getName()); if (traceId != null && spanId != null) { SpanId span = getSpanId(traceId, spanId, parentSpanId); return TraceData.builder().sample(true).spanId(span).build(); } } } return TraceData.builder().build(); }