Контекст MDC сбрасывается до нуля

У меня есть веб-сервис, работающий на dropwizard. Я использую slf4j MDC для установки различных атрибутов в моем веб-сервисе. В настоящее время у меня есть 2 конечные точки службы service1 и service2. Каждый из них вызывает функцию func(), в которой атрибуты регистрируются с помощью MDC. Но когда я позже извлекаю MDC для регистрации этих атрибутов в приложении буфера, в MDC доступны только атрибуты service1, контекст MDC service2 возвращает null. Я нигде не очищаю MDC в своем коде. Что может быть причиной.

service1()
{func()
}

service2()
{
func()
}

func() {
MDC.put(x,y);
}

mdc
person subbu seshan    schedule 27.03.2018    source источник


Ответы (1)


Я узнал, в чем дело. Хотя вызываемая функция func() такая же. service2() вызывает функцию в отдельном пуле потоков. (Поэтому MDC умирает в этом пуле потоков. В то время как service1 вызывает func() в том же потоке, поэтому он продолжает существовать, и атрибуты, установленные в контексте, доступны. Область действия MDC находится внутри потока.

person subbu seshan    schedule 27.03.2018