@Override public boolean isSampled(Span span) { if (span instanceof SpanWrapper) { span = ((SpanWrapper) span).unwrap(Span.class); } if (span instanceof io.jaegertracing.internal.JaegerSpan) { final io.jaegertracing.internal.JaegerSpan jaegerSpan = (io.jaegertracing.internal.JaegerSpan) span; return jaegerSpan.context().isSampled(); } return false; } }
private boolean isSampled() { if (references != null) { for (Reference reference : references) { if (reference.getSpanContext().isSampled()) { return true; } } } return false; }
private void finishWithDuration(long durationMicros) { synchronized (this) { if (finished) { log.warn("Span has already been finished; will not be reported again."); return; } finished = true; this.durationMicroseconds = durationMicros; } if (context.isSampled()) { tracer.reportSpan(this); } }
private void logFields(JaegerSpan jaegerSpan, String key, String value, String prevItem, boolean truncated, boolean valid) { if (!jaegerSpan.context().isSampled()) { return; } Map<String, String> fields = new HashMap<String, String>(); fields.put("event", "baggage"); fields.put("key", key); fields.put("value", value); if (prevItem != null) { fields.put("override", "true"); } if (truncated) { fields.put("truncated", "true"); } if (!valid) { fields.put("invalid", "true"); } jaegerSpan.log(fields); } }
@Override public boolean isSampled(Span span) { if (span instanceof SpanWrapper) { span = ((SpanWrapper) span).unwrap(Span.class); } if (span instanceof io.jaegertracing.internal.JaegerSpan) { final io.jaegertracing.internal.JaegerSpan jaegerSpan = (io.jaegertracing.internal.JaegerSpan) span; return jaegerSpan.context().isSampled(); } return false; } }
private JaegerSpan log(long timestampMicroseconds, String event, Map<String, ?> fields) { synchronized (this) { if (fields == null && event == null) { return this; } if (context.isSampled()) { if (fields != null && tracer.isExpandExceptionLogs()) { fields = addExceptionLogs(fields); } if (logs == null) { this.logs = new ArrayList<LogData>(); } logs.add(new LogData(timestampMicroseconds, event, fields)); } return this; } }
private JaegerSpan setTagAsObject(String key, Object value) { if (key.equals(Tags.SAMPLING_PRIORITY.getKey()) && (value instanceof Number)) { int priority = ((Number) value).intValue(); byte newFlags; if (priority > 0) { newFlags = (byte) (context.getFlags() | JaegerSpanContext.flagSampled | JaegerSpanContext.flagDebug); } else { newFlags = (byte) (context.getFlags() & (~JaegerSpanContext.flagSampled)); } context = context.withFlags(newFlags); } if (context.isSampled()) { tags.put(key, value); } return this; }
tags, references); if (context.isSampled()) { metrics.spansStartedSampled.inc(1); } else {
@Override public void inject(JaegerSpanContext spanContext, TextMap carrier) { carrier.put(TRACE_ID_NAME, // Use HexCode instead of getTraceId to ensure zipkin compatibility HexCodec.toLowerHex(spanContext.getTraceIdHigh(), spanContext.getTraceIdLow())); if (spanContext.getParentId() != 0L) { // Conventionally, parent id == 0 means the root span carrier.put(PARENT_SPAN_ID_NAME, HexCodec.toLowerHex(spanContext.getParentId())); } carrier.put(SPAN_ID_NAME, HexCodec.toLowerHex(spanContext.getSpanId())); carrier.put(SAMPLED_NAME, spanContext.isSampled() ? "1" : "0"); if (spanContext.isDebug()) { carrier.put(FLAGS_NAME, "1"); } for (Map.Entry<String, String> entry : spanContext.baggageItems()) { carrier.put(keys.prefixedKey(entry.getKey(), baggagePrefix), entry.getValue()); } }