Sleuth 1.3> 2.0 Совместимость - PullRequest
0 голосов
/ 06 июля 2018

У меня есть приложение, которое отправляет сообщения через сервисы AWS, и я вручную добавляю заголовки к сообщению через

    final Map<String, Object> braveHeaders = new HashMap<>();
    braveHeaders.put(Span.TRACE_ID_NAME, span.getTraceId());
    braveHeaders.put(Span.PARENT_ID_NAME, span.getParents().stream().findFirst().orElse(0L));
    braveHeaders.put(Span.SAMPLED_NAME, span.isExportable());
    braveHeaders.put(Span.SPAN_FLAGS, span.getBaggage());
    braveHeaders.put(Span.SPAN_NAME_NAME, span.getName());
    braveHeaders.put(Span.SPAN_EXPORT_NAME, span.getName());
    braveHeaders.put(Span.SPAN_ID_NAME, span.getSpanId());

В потребительском приложении я пытаюсь прочитать атрибуты и создать новый Span,

JsonNode braveTree = objectMapper.readTree(brave.asText());


// configure a function that extracts the trace context from a request
TraceContext.Extractor<JsonNode> extractor = tracing.propagation().extractor(
(carrier, key) -> carrier.get(key).asText());

// when a server receives a request, it joins or starts a new trace
Span span = tracing.tracer().nextSpan(extractor.extract(braveTree));

Заголовки успешно извлекаются из заголовков, но при синтаксическом анализе parseSpanId произойдет сбой из-за неверной длины, что приведет к сбою создания нового TraceContext.

  /** Parses the span id from the input string. Returns true if the ID is valid. */
final <C, K> boolean parseSpanId(Propagation.Getter<C, K> getter, C carrier, K key) {
  String spanIdString = getter.get(carrier, key);
  if (isNull(key, spanIdString)) return false;
  int length = spanIdString.length();
  if (invalidIdLength(key, length, 16)) return false;

  spanId = lenientLowerHexToUnsignedLong(spanIdString, 0, length);
  if (spanId == 0) {
    maybeLogNotLowerHex(key, spanIdString);
    return false;
  }
  return true;
}

Есть ли способ продолжения пролета при получении заголовков из Sleuth 1.3> 2.0? Или все приложения должны быть в одной версии?

1 Ответ

0 голосов
/ 06 июля 2018

На самом деле это была проблема с тем, как отправлялись заголовки. Заголовки не вызывали Span.idToHex(...), поэтому провалили проверку

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...