Skip to content

Commit ea5e013

Browse files
author
Adrian Cole
committed
Moves method used by dependencies job to reduce internal class leak
DependencyLinker isn't stable, yet, and creating the input from pieces requires a MergeById type that's also internal. By hiding this op, callers have less internal classes in their imports.
1 parent 8690532 commit ea5e013

File tree

2 files changed

+24
-0
lines changed

2 files changed

+24
-0
lines changed

zipkin/src/main/java/zipkin/internal/DependencyLinker.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,12 @@
1616
import java.util.ArrayList;
1717
import java.util.Iterator;
1818
import java.util.LinkedHashMap;
19+
import java.util.LinkedList;
1920
import java.util.List;
2021
import java.util.Map;
2122
import java.util.logging.Logger;
2223
import zipkin.DependencyLink;
24+
import zipkin.Span;
2325

2426
import static java.util.logging.Level.FINE;
2527

@@ -36,6 +38,19 @@ public final class DependencyLinker {
3638

3739
private final Map<Pair<String>, Long> linkMap = new LinkedHashMap<>();
3840

41+
/**
42+
* @param spans spans where all spans have the same trace id
43+
*/
44+
public DependencyLinker putTrace(List<Span> spans) {
45+
if (spans.isEmpty()) return this;
46+
47+
List<DependencyLinkSpan> linkSpans = new LinkedList<>();
48+
for (Span s : MergeById.apply(spans)) {
49+
linkSpans.add(DependencyLinkSpan.from(s));
50+
}
51+
return putTrace(linkSpans.iterator());
52+
}
53+
3954
/**
4055
* @param spans spans where all spans have the same trace id
4156
*/

zipkin/src/test/java/zipkin/internal/DependencyLinkerTest.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import java.util.List;
1717
import org.junit.Test;
1818
import zipkin.DependencyLink;
19+
import zipkin.TestObjects;
1920
import zipkin.internal.DependencyLinkSpan.Kind;
2021

2122
import static java.util.Arrays.asList;
@@ -28,6 +29,14 @@ public void baseCase() {
2829
assertThat(new DependencyLinker().link()).isEmpty();
2930
}
3031

32+
@Test
33+
public void linksSpans() {
34+
assertThat(new DependencyLinker().putTrace(TestObjects.TRACE).link()).containsExactly(
35+
DependencyLink.create("web", "app", 1L),
36+
DependencyLink.create("app", "db", 1L)
37+
);
38+
}
39+
3140
/**
3241
* The linker links a directed graph, if the span kind is unknown, we don't know the direction to
3342
* link.

0 commit comments

Comments
 (0)