Проблема с литой `tracecontext` в библиотеке« Микрометр-тест »JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Проблема с литой `tracecontext` в библиотеке« Микрометр-тест »

Сообщение Anonymous »

Описание:
Я сталкиваюсь с проблемой во время работы с библиотекой Tracing-test в проекте Java.

Код: Выделить всё

Map baggageFromParent = ((SimpleTraceContext) context).baggageFromParent();
Оба Oteltracecontext и Sompletracecontext Поделитесь одним и тем же родительским интерфейсом, TraceContext . Тем не менее, состав не удается во время выполнения с помощью ClassCastException .
контекст:
  • библиотека : io.micromer: tracing-test-test: 1.1.9
  • : 1.1.9
  • . Micrometer-Tracing Bridge-otel (on the ClassPath)
  • language : java
  • Инструмент построения : gradle
  • framework : junit 5
Сплык: < /h3>
Вот соответствующая часть кода из теста на микрометр. Этот код был добавлен в v1.1.9, поэтому, если я использую версию до этого, он работает нормально.

Код: Выделить всё

@Override
public Scope newScope(TraceContext context) {
if (context == null) {
SimpleTracer.resetCurrentSpan();
return Scope.NOOP;
}
SimpleSpan previous = SimpleTracer.getCurrentSpan();
SimpleTracer.setCurrentSpan(context);
Map baggageFromParent = ((SimpleTraceContext) context).baggageFromParent(); // Fails here
List baggageInScope = baggageFromParent.entrySet()
.stream()
.map(entry -> simpleTracer.simpleBaggageManager.createBaggageInScope(context, entry.getKey(),
entry.getValue()))
.collect(Collectors.toList());
return previous != null ? new RevertToPreviousScope(previous, baggageInScope) : new RevertToNullScope();
}
< /code>
 error < /h3>
java.lang.classcastexception: класс io.micromert.tracing.otel.bridge.oteltracecontext не может быть поднят в класс io.micrometer.tel.test.simple.simpletracontext (io.micrometer.tracing.otel.bridge.oteltracecontext и io.micromert.traging.test.simple.simpletracecontext находится в неназванном модуле погрузчика ') < /p>
 Наблюдения: < /h3
[list]
[*]OtelTraceContext
и SimpleTraceContext оба реализации TraceContext .
[*] Cast не удается, потому что тип времени выполнения -это oteltracecontext , а не Simpetracecontext .
[*] trable-bridge-bridge-bridge-bridge-bridge-oToTel . OTELTRACECONTEXT для использования в некоторых случаях.
[/list]
Вопрос:
Как я могу справиться с этой ситуацией правильно? Должен ли я рефактировать код, чтобы избежать кастинга, или есть лучший способ обеспечить совместимость между этими реализациями?

Подробнее здесь: https://stackoverflow.com/questions/795 ... st-library
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»