현재 테스트 중입니다: 완료되면 GitHub 코드를 오픈할 예정입니다.

R · 반납

구조refresh

락 반납 요청입니다. token은 그 획득이 받은 펜싱 토큰으로, 현재 보유 토큰과 일치할 때만 반납됩니다. 응답은 반납됨 R 또는 없음 N입니다.

token — 남의 락을 풀지 않기 위한 장치

토큰 검증이 없으면 위험한 순서가 생깁니다. 반납 요청이 장애조치를 넘어 재시도되는 사이 원래 락이 lease 만료로 회수되고 다른 클라이언트에게 재부여되면, 뒤늦게 도착한 반납이 그 새 보유자의 락을 풀어버립니다. 토큰이 일치할 때만 반납하므로 이 경로가 막힙니다.

토큰이 다르면 N(없음)이 오고 락은 그대로 유지됩니다. 반납 재시도는 항상 같은 토큰으로 보내야 하며, 응답 매칭도 에코된 token으로 합니다(응답 매칭 규칙).

바이트 표기: op는 ASCII 문자, token은 바이너리(u64, 빅엔디안), key는 UTF-8 텍스트(가변, 구조에서 N)입니다. 마지막 \n0A. 고정 헤더는 이진 값이라 0x0A를 포함할 수 있으니, 개행을 찾기 전에 바이트 수로 먼저 소비해야 합니다.

흐름

보유자 X
서버
대기자 Y
R · 반납 (key · token)
R · 반납됨
대기자가 있으면 A · 직접 인계 (새 token)
없는 키거나 토큰이 다르면
N · 없음
요청응답

반납된 키에 대기자가 있으면 대기열 맨 앞에게 재경쟁 없이 직접 인계됩니다 — 반납자에게 가는 R(반납됨)과 별개로, 대기자에게는 새 토큰을 담은 A(획득됨)가 갑니다.