T · 超时 (Timed Out)
结构refresh
当获取请求(A)未能在 wait 内获得锁时 发送 —— 服务器放弃发放该锁(这不是一个错误)。
owner 是把请求中携带的值原样回传的关联标识 —— 客户端用它来确定这是哪一个请求的 响应(响应匹配规则)。
字节表示法:
op是 ASCII 字符,owner是二进制(u64,大端序),key是 UTF-8 文本(变长,在结构中以N表示)。末尾的\n为0A。固定头部是二进制值,可能 包含0x0A,因此必须在扫描换行符之前先按字节数消费。
流程
客户端
服务器
A · 获取 (key · wait · lease · owner)
已被占用 → 加入队列
在 wait 秒内未轮到
T · 超时
从队列中移除 —— 发送新的 A 重试
请求响应
在 T 到达的那一刻,该请求已经从队列中移除,因此这把锁之后永远不会被 授予给它。由于也没有签发任何 token,所以无需做任何清理 —— 直接重试即可。