if (span != null) { result.setTraceInfo(RPCTraceInfoProto.newBuilder() .setTraceId(span.getSpanId().getHigh()) .setParentId(span.getSpanId().getLow()) .build());
TraceScope parent = tracer.newScope("HBaseSpanReceiver.main.parent"); Thread.sleep(10); long traceid = parent.getSpan().getSpanId().getHigh(); TraceScope child1 = tracer.newScope("HBaseSpanReceiver.main.child.1"); Thread.sleep(10);
@Override public void requestShortCircuitShm(String clientName) throws IOException { ShortCircuitShmRequestProto.Builder builder = ShortCircuitShmRequestProto.newBuilder(). setClientName(clientName); SpanId spanId = Tracer.getCurrentSpanId(); if (spanId.isValid()) { builder.setTraceInfo(DataTransferTraceInfoProto.newBuilder(). setTraceId(spanId.getHigh()). setParentId(spanId.getLow())); } ShortCircuitShmRequestProto proto = builder.build(); send(out, Op.REQUEST_SHORT_CIRCUIT_SHM, proto); }
@Override public void releaseShortCircuitFds(SlotId slotId) throws IOException { ReleaseShortCircuitAccessRequestProto.Builder builder = ReleaseShortCircuitAccessRequestProto.newBuilder(). setSlotId(PBHelperClient.convert(slotId)); SpanId spanId = Tracer.getCurrentSpanId(); if (spanId.isValid()) { builder.setTraceInfo(DataTransferTraceInfoProto.newBuilder(). setTraceId(spanId.getHigh()). setParentId(spanId.getLow())); } ReleaseShortCircuitAccessRequestProto proto = builder.build(); send(out, Op.RELEASE_SHORT_CIRCUIT_FDS, proto); }
static BaseHeaderProto buildBaseHeader(ExtendedBlock blk, Token<BlockTokenIdentifier> blockToken) { BaseHeaderProto.Builder builder = BaseHeaderProto.newBuilder() .setBlock(PBHelperClient.convert(blk)) .setToken(PBHelperClient.convert(blockToken)); SpanId spanId = Tracer.getCurrentSpanId(); if (spanId.isValid()) { builder.setTraceInfo(DataTransferTraceInfoProto.newBuilder() .setTraceId(spanId.getHigh()) .setParentId(spanId.getLow())); } return builder.build(); }
for (Span span : dequeuedSpans) { sbuilder.clear() .setTraceId(span.getSpanId().getHigh()) .setStart(span.getStartTimeMillis()) .setStop(span.getStopTimeMillis()) .build()); Put put = new Put(Bytes.toBytes(span.getSpanId().getHigh())); put.addColumn(HBaseSpanReceiver.this.cf, sbuilder.build().toByteArray(), null); if (span.getParents().length == 0) {
if (span != null) { result.setTraceInfo(RPCTraceInfoProto.newBuilder() .setTraceId(span.getSpanId().getHigh()) .setParentId(span.getSpanId().getLow()) .build());
/** * Converts a given HTrace span to a Zipkin Span. * <ul> * <li>First set the start annotation. [CS, SR], depending whether it is a client service or not. * <li>Set other id's, etc [TraceId's etc] * <li>Create binary annotations based on data from HTrace Span object. * <li>Set the last annotation. [SS, CR] * </ul> */ public Span convert(org.apache.htrace.core.Span hTraceSpan) { Span zipkinSpan = new Span(); String serviceName = hTraceSpan.getTracerId().toLowerCase(); Endpoint ep = new Endpoint(ipv4Address, (short) getPort(serviceName), serviceName); List<Annotation> annotationList = createZipkinAnnotations(hTraceSpan, ep); List<BinaryAnnotation> binaryAnnotationList = createZipkinBinaryAnnotations(hTraceSpan, ep); zipkinSpan.setTrace_id(hTraceSpan.getSpanId().getHigh()); if (hTraceSpan.getParents().length > 0) { if (hTraceSpan.getParents().length > 1) { LOG.error("zipkin doesn't support spans with multiple parents. Omitting " + "other parents for " + hTraceSpan); } zipkinSpan.setParent_id(hTraceSpan.getParents()[0].getLow()); } zipkinSpan.setId(hTraceSpan.getSpanId().getLow()); zipkinSpan.setName(hTraceSpan.getDescription()); zipkinSpan.setAnnotations(annotationList); zipkinSpan.setBinary_annotations(binaryAnnotationList); return zipkinSpan; }
/** * Converts a given HTrace span to a Zipkin Span. * <ul> * <li>First set the start annotation. [CS, SR], depending whether it is a client service or not. * <li>Set other id's, etc [TraceId's etc] * <li>Create binary annotations based on data from HTrace Span object. * <li>Set the last annotation. [SS, CR] * </ul> */ public Span convert(org.apache.htrace.core.Span hTraceSpan) { Span zipkinSpan = new Span(); String serviceName = hTraceSpan.getTracerId().toLowerCase(); Endpoint ep = new Endpoint(ipv4Address, (short) getPort(serviceName), serviceName); List<Annotation> annotationList = createZipkinAnnotations(hTraceSpan, ep); List<BinaryAnnotation> binaryAnnotationList = createZipkinBinaryAnnotations(hTraceSpan, ep); zipkinSpan.setTrace_id(hTraceSpan.getSpanId().getHigh()); if (hTraceSpan.getParents().length > 0) { if (hTraceSpan.getParents().length > 1) { LOG.error("zipkin doesn't support spans with multiple parents. Omitting " + "other parents for " + hTraceSpan); } zipkinSpan.setParent_id(hTraceSpan.getParents()[0].getLow()); } zipkinSpan.setId(hTraceSpan.getSpanId().getLow()); zipkinSpan.setName(hTraceSpan.getDescription()); zipkinSpan.setAnnotations(annotationList); zipkinSpan.setBinary_annotations(binaryAnnotationList); return zipkinSpan; }
Assert.assertEquals(childScope.getSpan().getParents()[0].getHigh(), spanIdHashMap.get(childScope.getSpan().getParents()[0].hashCode()).getHigh()); Assert.assertEquals(childScope.getSpan().getParents()[0].getLow(), spanIdHashMap.get(childScope.getSpan().getParents()[0].hashCode()).getLow()); Assert.assertEquals(childScope.getSpan().getParents()[1].getHigh(), spanIdHashMap.get(childScope.getSpan().getParents()[1].hashCode()).getHigh()); Assert.assertEquals(childScope.getSpan().getParents()[1].getLow(), spanIdHashMap.get(childScope.getSpan().getParents()[1].hashCode()).getLow());
public static void appendJsonString(Span span, OutputStreamWriter writer) throws IOException { writer.append("{"); appendField(JSON_FIELD_TRACE_ID, span.getSpanId().getLow(), writer); appendField(JSON_FIELD_SPAN_ID, span.getSpanId().getHigh(), writer); appendField(JSON_FIELD_DESCRIPTION, span.getDescription(), writer); if (span.getParents().length != 0) { appendField(JSON_FIELD_PARENT_ID, span.getParents()[0].getLow(), writer); } appendField(JSON_FIELD_START, span.getStartTimeMillis(), writer); appendField(JSON_FIELD_STOP, span.getStopTimeMillis(), writer); if (!span.getTimelineAnnotations().isEmpty()) { writer.append("\""); writer.append(JSON_FIELD_TIMELINE); writer.append("\""); writer.append(":"); writer.append("["); for (TimelineAnnotation annotation : span.getTimelineAnnotations()) { writer.append("{"); appendField(JSON_FIELD_TIMELINE_TIME, annotation.getTime(), writer); appendField(JSON_FIELD_TIMELINE_MESSEGE, annotation.getMessage(), writer); writer.append("}"); } writer.append("]"); } writer.append("}"); }
spanRow.addLong(column_span_start_time, span.getStartTimeMillis()); spanRow.addLong(column_span_stop_time, span.getStopTimeMillis()); spanRow.addLong(column_span_span_id, span.getSpanId().getHigh()); if (span.getParents().length == 0) { spanRow.addBoolean(column_span_parent, true); PartialRow parentRow = parentInsert.getRow(); parentRow.addLong(column_parent_id_low, span.getParents()[i].getLow()); parentRow.addLong(column_parent_id_high, span.getParents()[i].getHigh()); parentRow.addLong(column_parent_child_span_id, span.getSpanId().getLow()); session.apply(parentInsert);
@Test(timeout=60000) public void testRootSpansHaveNonZeroSpanId() throws Exception { Tracer tracer = new Tracer.Builder(). name("testRootSpansHaveNonZeroSpanId"). tracerPool(new TracerPool("testRootSpansHaveNonZeroSpanId")). conf(HTraceConfiguration.fromKeyValuePairs( "sampler.classes", "AlwaysSampler")).build(); TraceScope scope = tracer. newScope("myRootSpan", new SpanId(100L, 200L)); Assert.assertNotNull(scope); Assert.assertEquals("myRootSpan", scope.getSpan().getDescription()); Assert.assertTrue(scope.getSpan().getSpanId().isValid()); Assert.assertEquals(100L, scope.getSpan().getSpanId().getHigh()); Assert.assertNotEquals(0L, scope.getSpan().getSpanId().getLow()); scope.close(); } }