ByTraceId(Iterator<Record> delegate, boolean hasTraceIdHigh) { this.delegate = new PeekingIterator<>(delegate); this.hasTraceIdHigh = hasTraceIdHigh; }
@Override public boolean hasNext() { return delegate.hasNext() // We don't have a query parameter for strictTraceId when fetching dependency links, so we // ignore traceIdHigh. Otherwise, a single trace can appear as two, doubling callCount. && delegate.peek().getValue(ZipkinSpans.ZIPKIN_SPANS.TRACE_ID) == traceIdLo; }
@Override public DependencyLinkSpan next() { Record5<Long, Long, Long, String, String> row = delegate.next(); DependencyLinkSpan.Builder result = DependencyLinkSpan.builder( row.getValue(ZipkinSpans.ZIPKIN_SPANS.PARENT_ID), row.getValue(ZipkinSpans.ZIPKIN_SPANS.ID) ); parseClientAndServerNames( result, row.getValue(ZIPKIN_ANNOTATIONS.A_KEY), row.getValue(ZIPKIN_ANNOTATIONS.ENDPOINT_SERVICE_NAME)); while (hasNext()) { Record5<Long, Long, Long, String, String> next = delegate.peek(); if (next == null) { continue; } if (row.getValue(ZipkinSpans.ZIPKIN_SPANS.ID).equals(next.getValue(ZipkinSpans.ZIPKIN_SPANS.ID))) { delegate.next(); // advance the iterator since we are in the same span id parseClientAndServerNames( result, next.getValue(ZIPKIN_ANNOTATIONS.A_KEY), next.getValue(ZIPKIN_ANNOTATIONS.ENDPOINT_SERVICE_NAME)); } else { break; } } return result.build(); }
static long traceIdHigh(PeekingIterator<Record> delegate) { return delegate.peek().getValue(ZipkinSpans.ZIPKIN_SPANS.TRACE_ID_HIGH); }
@Override public boolean hasNext() { return delegate.hasNext(); }
@Override public DependencyLinkSpan next() { Record5<Long, Long, Long, String, String> row = delegate.next(); DependencyLinkSpan.Builder result = new DependencyLinkSpan.Builder( row.getValue(ZIPKIN_SPANS.PARENT_ID), row.getValue(ZIPKIN_SPANS.ID) ); parseClientAndServerNames( result, row.getValue(ZIPKIN_ANNOTATIONS.A_KEY), row.getValue(ZIPKIN_ANNOTATIONS.ENDPOINT_SERVICE_NAME)); while (hasNext()) { Record5<Long, Long, Long, String, String> next = delegate.peek(); if (next == null) { continue; } if (row.getValue(ZIPKIN_SPANS.ID).equals(next.getValue(ZIPKIN_SPANS.ID))) { delegate.next(); // advance the iterator since we are in the same span id parseClientAndServerNames( result, next.getValue(ZIPKIN_ANNOTATIONS.A_KEY), next.getValue(ZIPKIN_ANNOTATIONS.ENDPOINT_SERVICE_NAME)); } else { break; } } return result.build(); }
@Override public Iterator<DependencyLinkSpan> next() { currentTraceId = delegate.peek().getValue(ZIPKIN_SPANS.TRACE_ID); return new DependencyLinkSpanIterator(delegate, currentTraceId); }
@Override public boolean hasNext() { return delegate.hasNext(); }
@Override public DependencyLinkSpan next() { Record5<Long, Long, Long, String, String> row = delegate.next(); DependencyLinkSpan.Builder result = new DependencyLinkSpan.Builder( row.getValue(ZIPKIN_SPANS.PARENT_ID), row.getValue(ZIPKIN_SPANS.ID) ); parseClientAndServerNames( result, row.getValue(ZIPKIN_ANNOTATIONS.A_KEY), row.getValue(ZIPKIN_ANNOTATIONS.ENDPOINT_SERVICE_NAME)); while (hasNext()) { Record5<Long, Long, Long, String, String> next = delegate.peek(); if (next == null) { continue; } if (row.getValue(ZIPKIN_SPANS.ID).equals(next.getValue(ZIPKIN_SPANS.ID))) { delegate.next(); // advance the iterator since we are in the same span id parseClientAndServerNames( result, next.getValue(ZIPKIN_ANNOTATIONS.A_KEY), next.getValue(ZIPKIN_ANNOTATIONS.ENDPOINT_SERVICE_NAME)); } else { break; } } return result.build(); }
@Override public Iterator<DependencyLinkSpan> next() { currentTraceId = delegate.peek().getValue(ZipkinSpans.ZIPKIN_SPANS.TRACE_ID); return new DependencyLinkSpanIterator(delegate, currentTraceId); }
ByTraceId(Iterator<Record5<Long, Long, Long, String, String>> delegate) { this.delegate = new PeekingIterator<>(delegate); }
@Override public boolean hasNext() { return delegate.hasNext(); }
@Override public Span next() { if (!hasNext()) throw new NoSuchElementException(); Record row = delegate.peek(); String srService = null, csService = null, caService = null, saService = null; while (hasNext()) { // there are more values for this trace if (spanId != delegate.peek().getValue(ZipkinSpans.ZIPKIN_SPANS.ID)) { break; // if we are in a new span Record next = delegate.next(); // row for the same span
@Override public Iterator<DependencyLinkSpan> next() { currentTraceId = delegate.peek().getValue(ZIPKIN_SPANS.TRACE_ID); return new DependencyLinkSpanIterator(delegate, currentTraceId); }
ByTraceId(Iterator<Record5<Long, Long, Long, String, String>> delegate) { this.delegate = new PeekingIterator<>(delegate); }
@Override public boolean hasNext() { return delegate.hasNext(); }
@Override public Iterator<Span> next() { if (!hasNext()) throw new NoSuchElementException(); currentTraceIdHi = hasTraceIdHigh ? traceIdHigh(delegate) : null; currentTraceIdLo = delegate.peek().getValue(ZipkinSpans.ZIPKIN_SPANS.TRACE_ID); return new DependencyLinkV2SpanIterator(delegate, currentTraceIdHi, currentTraceIdLo); }