Fencing-токен
tokenв ответе о захватеA— это монотонно возрастающий u64. Независимо от ключа и от того, какой это по счёту захват, значение всегда больше любого ранее выданного токена.- В одиночном режиме монотонность гарантирует глобальный счётчик сервера, а в режиме кластера — номер выдачи, реплицируемый через консенсус: токен назначается детерминированно в момент применения зафиксированной команды, поэтому все узлы вычисляют одно и то же значение, и он продолжает расти даже при смене лидера.
- Если защищаемый ресурс соблюдает правило «отклонять любой токен ниже последнего увиденного», он может заблокировать доступ старого владельца, проснувшегося с опозданием после истечения
lease(с меньшим токеном) — это последняя линия защиты от задержек на стороне клиента (например, пауз GC), которые сервер блокировок не может контролировать.
Сценарий, объясняющий необходимость этой проверки, смотрите в Как это работает.