Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[web] 재구축 계획 - 유저 제거 로직 #177

Open
YangSiJun528 opened this issue Aug 29, 2023 · 0 comments
Open

[web] 재구축 계획 - 유저 제거 로직 #177

YangSiJun528 opened this issue Aug 29, 2023 · 0 comments
Labels
fix 기능 보완 refactor 코드 개선

Comments

@YangSiJun528
Copy link
Collaborator

개요

현재 유저 삭제 기능에서 CasCadeDeleteService와 DeleteService를 사용하고 있습니다.
두 기능은 예외 대신 경고 수준의 로그를 남기는 점을 제외하고는 동일한 로직을 가지고 있습니다.
처음에는 기존의 삭제 서비스 객체를 재사용하려고 했으나 문제가 발생하여 새로운 객체를 도입하게 되었습니다.

본문

유저 삭제 시에는 관련된 원서와 본인 인증 데이터도 함께 삭제해야 하지만, 유저 삭제 시점에 원서나 본인 인증 데이터가 존재하지 않을 수 있습니다.
기존 서비스는 삭제하려는 데이터가 없는 경우 예외를 발생시켰습니다.

그레사 try-catch를 사용해 예외 발생을 catch하여 해결하려고 하거나, nested transaction을 사용하려고 했지만,
Spring은 트랜잭션 중에 예외가 발생하고 메서드를 벗어난 경우 에러의 catch 여부와 상관없이 UnexpectedRollbackException 예외를 발생시킵니다. 또한 JPA는 nested transaction을 지원하지 않습니다.

동일한 예외에 대한 더 자세한 설명은 배민 기술 블로그의 관련 글에서 확인할 수 있습니다.

따라서, 이러한 예외를 발생시키지 않으면서 CascadeDeleteOOOService와 DeleteOOOService를 통합해야 합니다.

@YangSiJun528 YangSiJun528 added refactor 코드 개선 fix 기능 보완 labels Aug 29, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
fix 기능 보완 refactor 코드 개선
Projects
None yet
Development

No branches or pull requests

1 participant