N · Не найдено
Случай, когда при запросе освобождения (R) этого ключа не оказалось — либо он есть, но token не совпал с текущим удерживаемым. Это не ошибка, а значение «отсутствовало».
Обозначение байтов:
op— символ ASCII,token— бинарный (u64, big-endian),key— текст в UTF-8 (переменной длины,Nв структуре). Завершающий\n— это0A. Фиксированный заголовок — бинарное значение и может содержать0x0A, поэтому его нужно сначала вычитать по количеству байт, и лишь затем искать перевод строки.
token — это коррелятор: значение, отправленное в запросе и возвращённое без изменений. По нему клиент определяет, ответом на какой запрос является этот кадр (Правила сопоставления ответов).
Поток
Освобождение близко к идемпотентному — если сервер уже забрал ключ по истечении lease, или R отправлен на уже освобождённый ключ, приходит N. То же самое происходит, когда ключ успели выдать заново другому владельцу: токен не совпадает, и его блокировка остаётся нетронутой. Это одна из веток нормального потока, поэтому клиенту не обязательно считать её ошибкой.