From 53ad3ccd62de193bb25704882dd8d9eee187507a Mon Sep 17 00:00:00 2001 From: jmj Date: Fri, 29 May 2026 21:24:43 +0900 Subject: [PATCH] =?UTF-8?q?fix(session):=20generate.followup=20listener?= =?UTF-8?q?=EB=A5=BC=20REQUIRES=5FNEW=20=EB=A1=9C=20(LazyInitializationExc?= =?UTF-8?q?eption)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @TransactionalEventListener + NOT_SUPPORTED 조합에서 messageRepository.findById() 가 자체 짧은 트랜잭션을 열고 닫은 뒤 parent.getSession() (InterviewSession LAZY 프록시) 접근 시점에 세션이 없어 LazyInitializationException 발생. REQUIRES_NEW 로 listener 전체를 새 트랜잭션에 묶어 LAZY 로딩 가능하게. Spring 7 의 "AFTER_COMMIT listener 에 @Transactional 사용 시 NOT_SUPPORTED 또는 REQUIRES_NEW 만 허용" 제약도 만족. 원인: stack-up.shop 골든패스 E2E 점검 중 답변 제출 후 followup 미발행으로 발견. --- .../stackup/session/application/SessionFollowupRequester.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/main/java/com/stackup/stackup/session/application/SessionFollowupRequester.java b/backend/src/main/java/com/stackup/stackup/session/application/SessionFollowupRequester.java index 37064190..09f16f23 100644 --- a/backend/src/main/java/com/stackup/stackup/session/application/SessionFollowupRequester.java +++ b/backend/src/main/java/com/stackup/stackup/session/application/SessionFollowupRequester.java @@ -28,7 +28,7 @@ public class SessionFollowupRequester { private final RabbitMqProperties properties; private final InterviewMessageRepository messageRepository; - @Transactional(propagation = Propagation.NOT_SUPPORTED) + @Transactional(propagation = Propagation.REQUIRES_NEW) @TransactionalEventListener(phase = TransactionPhase.AFTER_COMMIT) public void onAnswerSubmitted(AnswerSubmittedEvent event) { InterviewMessage parent = messageRepository.findById(event.parentQuestionMessageId()).orElse(null);