Skip to content

Fix: EPUB 업로드 트랜잭션 범위 축소 - #144

Merged
ppp1969 merged 2 commits into
devfrom
143-fix-upload-transaction-scope
Jul 14, 2026
Merged

ppp1969 merged 2 commits into
devfrom
143-fix-upload-transaction-scope

Conversation

@ppp1969

@ppp1969 ppp1969 commented Jul 14, 2026 •

Copy link
Copy Markdown
Contributor

🧑🏻‍💻 PR 작업 내역 요약

EPUB 업로드 시 S3 업로드와 EPUB 처리 같은 외부 I/O가 DB 트랜잭션 안에서 오래 실행되던 구조를 분리했습니다.

Closes #143

📋 변경 사항

  • BookService.uploadBook()를 Propagation.NOT_SUPPORTED로 전환해 메서드 전체가 read-only 트랜잭션을 물지 않도록 했습니다.
  • BookUploadTransactionService를 추가해 책 row 생성, artifact 반영, normalization job 생성, 실패 상태 반영만 짧은 DB 트랜잭션으로 처리합니다.
  • EPUB source 및 cover S3 업로드를 DB 완료 트랜잭션 밖에서 수행하도록 순서를 변경했습니다.
  • source staging 또는 DB 완료 실패 시 job을 dispatch하지 않고 책 상태를 FAILED로 남기는 보상 처리를 추가했습니다.
  • cover 업로드 실패는 기존 동작처럼 전체 업로드 실패로 전파하지 않고 cover 없이 계속 진행합니다.
  • 최신 dev를 병합하고, 충돌 해결 시 CdnUrlService 기반 표지 URL 변환을 함께 보존했습니다.
  • BookServiceTest, BookUploadTransactionServiceTest로 호출 순서와 실패 보상 흐름을 검증했습니다.

🔍 Code Review

  • worker 수를 늘리는 변경이 아니라, 동시 업로드 시 DB 커넥션 점유 시간을 줄이는 구조 개선입니다.
  • source upload 성공 후 DB 완료 단계가 실패한 경우 S3 object 정리는 아직 수행하지 않으며 책 상태는 FAILED로 남습니다.
  • 충돌 해결 후 compileJava compileTestJava, 관련 서비스 테스트, 전체 test를 모두 통과했습니다.

📸 ScreenShot

서버 내부 동작 구조 개선으로 별도 화면 캡처는 없습니다.

@ppp1969
ppp1969 marked this pull request as ready for review July 14, 2026 16:45
@ppp1969
ppp1969 merged commit b8c5964 into dev Jul 14, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Fix: EPUB 업로드 외부 I/O를 DB 트랜잭션 밖으로 분리

1 participant