두가지 요청이 동시에 들어온다(1. 결제 실행 2. 포인트 조회)
1번의 요청이 처리되었으므로 바로 조회했을때 5000원의 포인트가 조회된다.
그러나 1번이 그후 취소가 된다면 다시 조회했을때 5000원의 포인트는 조회되지 않는다.
=> 트랜젝션 진행중 누군가 amount값을 변경하면 같은 쿼리에서 다른 출력값이 나온다.
서로가 서로의 작업이 끝날때까지 기다리면서 락이 걸린상태(엇갈린 락)
1. 로직의 흐름을 한방향으로 통일한다 (유저 -> 쿠폰 -> 포인트 처럼 같은방향)
2. 이미 데드락이 발생하였으면 처리가 늦은 요청을 kill한다.(rollback이 잘되었는지 주의)
이해하기 쉽게 포인트와 트랜젝션에 대해서 설명해주셔서 감사합니다. 덕분에 훨씬 많은 걸 배웠어요!