Потеря MDC в Quarkus ManagedExecutorJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Потеря MDC в Quarkus ManagedExecutor

Сообщение Anonymous »

Я запускаю асинхронный процесс через запрос REST. Как только запросы REST возвращаются, я теряю контекст MDC внутри своего асинхронного кода выполнения. Я попытался «скопировать» его с помощью ThreadContext, но это не сработало. Кроме того, копирование вручную не помогло. Каким-то образом MDC очищается после возврата внешнего запроса REST.

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

Map copyOfContextMap = MDC.getCopyOfContextMap();

ThreadContext threadContext = ThreadContext.builder()
.propagated(ThreadContext.ALL_REMAINING)
.cleared()
.build();
Runnable runnable = threadContext.contextualRunnable(() -> {
try {

MDC.setContextMap(copyOfContextMap);
latch.countDown();

for (int i = 0; i < 10; i++) {
log.info(i + ": Log inside async executor");
sleepQuietly();
}
} catch (Throwable e) {
log.error("Error during async execution", e);
}
});

executor.runAsync(runnable);
Как сохранить контекст MDC из асинхронно выполняемого потока? Я вижу, что это происходит в первых строках журнала, когда внешний запрос не вернулся, но потом кажется, что он очищается.

Подробнее здесь: https://stackoverflow.com/questions/798 ... edexecutor
Ответить

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

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

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

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

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