M · 이동
구조refresh
이 노드는 리더가 아니니 리더로 가라는 안내입니다(클러스터 전용). 본문은 리더의 클라이언트 주소(host:port) 텍스트입니다 — Raft 포트가 아니라 클라이언트가 그대로 접속하면 되는 주소입니다.
공식 클라이언트는 allowlist에 이미 등록된 주소와 정확히 일치하는 경우에만 리더 힌트로 기억하고 그 session을 닫습니다. 이미 한 바이트라도 송신한 acquire는 M에 임의로 대응시켜 재전송하지 않고 Indeterminate로 끝냅니다. 이후의 독립 요청이나 아직 writer가 잡지 않은 미송신 요청은 새 leader 연결을 사용합니다. 리더가 아직 선출되지 않아 안내할 주소가 없으면 대신 E no_leader가 옵니다.
자세한 클러스터 동작은 프로토콜 (클러스터)를 참고하세요.
바이트 표기:
op는 ASCII 문자,addr는 UTF-8 텍스트(가변, 구조에서N)입니다. 마지막\n은0A.
흐름
클라이언트
팔로워
리더
A · 획득 (key)
M · 이동 (리더 주소)
리더 주소로 연결 전환
기존 session 종료 · 송신된 acquire는 Indeterminate
다음 독립 acquire는 leader에서 시작
요청응답
M에는 owner와 key가 없고 한 session에는 여러 acquire가 섞일 수 있습니다. leader→follower 전환 순간에는 commit 중인 요청과 팔로워가 거절한 요청도 공존할 수 있으므로, M 하나를 특정 pending의 확정 미획득 증거로 쓰지 않습니다. 이 보수적인 규칙이 중복 acquire와 같은-owner lease 연장을 막습니다.