Conversation
echerniak
approved these changes
Aug 13, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
сейчас сервис работает нормально , но в логах теперь нет метаданных из jwt которые ранее попадали туда из контекста трейса вуди, это произошло потому что потеряли часть логики вуди хттп хедера при миграции на сб4. в целом и так можно жить, но с wflow удобнее корректно стратовать вуди трейс контекст
проверка регрессии
Да, после повторной проверки причина однозначна: при миграции я перенёс только видимую часть
woody-http-bridge, а его ключевое неявное поведение потерял.Что работало раньше:
woody-http-bridgeчерез Spring Boot autoconfiguration автоматически регистрировалWoodyTracingFilterс order-50. В коде Wachter этого фильтра явно не было — он появлялся благодаря зависимости и настройкеwoody-http-bridge.tracing.Фильтр обрабатывал входящий
/wachter:woody.*/x-woody-*;woody.meta.user-identity.*;TraceData;woody.meta.*вTraceData.activeSpan.customMetadata;WFlow.При запуске
WFlowбиблиотека Woody вызывалаMDCUtils.putTraceData(...). Woody 3.0.0 преобразовывал custom metadata:в MDC-поле:
А логгер уже записывал MDC в структурированный JSON, который забирал OpenSearch.
TraceContextExtractorчитал текущийTraceContext, включая custom metadata, и отправлял её downstream какwoody.meta.*.То есть существовало единое состояние:
Что я сделал при миграции неправильно:
woody-http-bridge;WoodyTracingFilter;TraceContextExtractorсобственнымTraceHeaderNormalizer;woody.meta.*, но вызываю это только при подготовке исходящего запроса в WachterClient.java;TraceData;customMetadata;/wachterвWFlow.Текущая цепочка поэтому выглядит так:
[TraceHeaderNormalizer.java] действительно извлекает JWT, но возвращает только
HttpHeaders. С WoodyTraceContext, custom metadata и MDC этот класс вообще не работает.Именно поэтому в экспортированном логе одновременно наблюдаются два факта:
Send request ... headersприсутствуютwoody.meta.user-identity.*;rpc.server.metadata.user-identity.*пусты.Это не проблема JWT и не проблема OpenSearch. Значения успешно извлечены, но существуют только как исходящие HTTP-заголовки и никогда не попадают в локальный Woody MDC.
Почему тесты пропустили регрессию:
woody.meta.*;traceparent: сохранение trace ID и создание нового span ID;MDC.get("rpc.server.metadata.user-identity.email")во время реальной обработки запроса.Более того, старые тесты, создававшие
TraceContext, при миграции были упрощены, потому что новый клиент больше не требовал контекст. Это было принято за успешное отделение от OTEL, хотя фактически исчез и необходимый Woody-контекст.OTEL здесь оказался отвлекающим фактором. В bridge в одних классах были смешаны:
TraceData/WFlow/MDC, которые следовало перенести;Я ошибочно удалил первые две части вместе. Агент корректно заменил первую, но он не заменяет и не должен заменять Woody custom metadata/MDC.
Итог: Spring Boot 4 сам по себе эту регрессию не создал, Woody 3.0.0 по-прежнему поддерживает
WFlowиrpc.server.metadata.*, а деплой OTEL работает. Регрессия появилась непосредственно из-за неполного переноса поведенияwoody-http-bridgeв Wachter.