Потеря 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

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