@Test void getTagsAndThenValues() throws IOException {
    Span span1 = Span.newBuilder().traceId("1").id("1").name("root")
      .localEndpoint(Endpoint.newBuilder().serviceName("app").build())
      .putTag("environment", "dev")
      .putTag("http.method", "GET")
      .timestamp(TODAY * 1000)
      .build();
    Span span2 = Span.newBuilder().traceId("1").parentId("1").id("2")
      .localEndpoint(Endpoint.newBuilder().serviceName("app").build())
      .putTag("environment", "dev")
      .putTag("http.method", "POST")
      .putTag("http.path", "/users")
      .timestamp(TODAY * 1000)
      .build();
    Span span3 = Span.newBuilder().traceId("2").id("3").name("root")
      .localEndpoint(Endpoint.newBuilder().serviceName("app").build())
      .putTag("environment", "dev")
      .putTag("http.method", "GET")
      .timestamp(TODAY * 1000)
      .build();
    Span span4 = Span.newBuilder().traceId("2").parentId("3").id("4")
      .localEndpoint(Endpoint.newBuilder().serviceName("app").build())
      .putTag("environment", "dev")
      .putTag("http.method", "POST")
      .putTag("http.path", "/users")
      .timestamp(TODAY * 1000)
      .build();
    storage.accept(List.of(span1, span2, span3, span4)).execute();

    assertThat(storage.getKeys().execute()).containsOnlyOnce("http.path");
    assertThat(storage.getValues("http.path").execute()).containsOnlyOnce("/users");
  }
It should be safe to run dependency link jobs twice
zipkin/src/test/java/zipkin2/storage/InMemoryStorageTest.java