ringloRINGLO
목록

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

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

PREV / 정산 대시보드에 환율 스냅샷 고정 — 결제 시점 환율로 정산한다. 월말 환율로 하면 작가가 손해 보는 달이 생긴다.ARCHIVE / INDEX