Ticketing
Документация

L · Уведомление о лидере

Структураrefresh

Это не ответ на запрос, а уведомление, которое сервер отправляет сам (только для кластера). Обнаружив смену лидера Raft, узел один раз отправляет клиентский адрес нового лидера всем клиентам, подключённым к этому узлу.

Чем отличается от M

M · ПеремещеноL · Уведомление о лидере
Природаответ на запросуведомление от сервера (не связано с запросом)
Смысл«этот запрос здесь обработать нельзя»«лидер сменился» (информация)
Соединениезакрыть и переподключиться к новому лидерусохраняется — обновляется только подсказка
Этот узелточно не лидерможет сам быть новым лидером

Получив L, закрывать соединение нельзя: отправивший уведомление узел часто и есть новый лидер, и по этому соединению ещё остаются запросы.

Зачем это нужно

Без такого уведомления клиент узнаёт о смене лидера, только отправив запрос и получив M в ответ. L убирает этот лишний круг: уже первый запрос после отказа уходит прямо новому лидеру.

Клиенты старых версий, не знающие этот op, могут его игнорировать без ущерба для работы — пострадает только производительность, вернувшись к прежнему уровню (запрос → M → повтор).

Обозначение байтов: op — символ ASCII, addr — текст в UTF-8 (переменной длины, N в структуре). Завершающий \n — это 0A.

Поток

Клиент
Подключённый узел
Новый лидер
выборы сменили лидера
L · leader (адрес нового лидера)
обновляется только подсказка — соединение сохраняется
следующий запрос идёт сразу к новому лидеру
A · acquired (token)
запросответ

В режиме одиночного сервера понятия лидера нет, поэтому такое уведомление не отправляется. Полное описание поведения кластера см. в Протокол (кластер).