вынес в соседний метод, поставил @Transaction аннотацию какая была закоментирована — не помогло.
если BatchLogGateway это спинговый сервис, почему у него вызывают "непроксированную" версию метода ?
может это как-то связанно с каскадом вызовов ? в прикладухе есть @RestController, он дергает бизнес логику, где расставлены @Async (что бы рест клиента не задерживать). тут все отлично работает, вижу, что бизнес логика в отдельных тредах, дальше если вдруг случается exception то BatchGateway апдейтит статус батча и дергает BatchLogGateway#writeBatchLog(), записать сам exception. вот его я и ожидал увидеть в третьем треде, вроде все компоненты в каскаде вызовов спринговые сервисы. как я понял это все, что требуется.