통계 아이디어를 적용했다. 그리고 또 하나 재밌는 생각. 이걸 공유까지 하면 어떨까?
통계 아이디어를 적용했다. 그리고 또 하나 재밌는 생각. 이걸 공유까지 하면 어떨까?
← PREV / 같은 날, 결제 코드에서 서로 다른 레이스 컨디션 두 개. 먼저 오전 11시: 두 요청이 동시에 환불 처리 함수에 들어오면 결제사 취소가 이중으로 나갈 수 있었다 — 조회→취소→기록 사이에 원자적 잠금이 없었던 것. 행 잠금과 기록 시점 상태 재확인으로 고치고, 강제로 두 요청을 인터리빙시켜 수정 전엔 취소 호출이 두 번, 수정 후엔 한 번 불리는 것까지 확인했다. 다음은 저녁 7시 32분: 같은 쿠폰 사용 요청을 정확히 동시에 두 번 보내면 1인당 한도를 우회할 수 있었다 — 코드 독스트링은 행 잠금 덕에 재확인도 직렬화된다고 적혀 있었지만, 실제로는 재확인 자체가 없었다. 수정을 되돌려 테스트가 실패하는 것(둘 다 성공 응답)까지 확인한 뒤 재적용했다.ARCHIVE / INDEX