Search
Write a publication
Pull to refresh

Comments 4

Насчёт MDC там не так все радужно, на самом деле. API ScopedValue подразумевает, что хранимое значение неизменяемо и может быть только переопределено во вложенных скоупах.

А MDC внутри содержит HashMap, соответственно там между сабтасками может быть неразбериха (если они пишут в MDC).

Я как-то экспериментировал и писал адаптеры для MDC и SpringSecurity для поддержки StructuredScope и ScopedValues (чтобы код оставался таким же простым как в примерах из JEP) и (не знаю как сейчас, может за год изменилось что) там все равно нужно было писать обёртку, чтобы каждая подзадача получила свою копию MDC, либо гарантировать что в подзадаче никогда не будет вызываться MDC.put, а только та его версия, что использует стек внутри.

Со временем все адаптируются, а пока да, будет большое количество краевых случаев.

Выглядит интересно. Хотелось бы, чтобы API был бы более foolproof. Например, пользователь может вызвать fork после join или не вызвать join вообще - в этих случаях будет ошибка. Да - сам виноват, но может быть можно было бы защититься и от этого.

По моим ощущениям, баланс сейчас идеален. Ещё более foolproof реализовывать разумно на стороне фреймворков и библиотек.

Sign up to leave a comment.