| Предыдущий | Следующий |
| STATUS_RING_PREVIOUSLY_ABOVE_QUOTA | STATUS_RING_SIGNAL_OPPOSITE_ENDPOINT |
STATUS_RING_NEWLY_EMPTY
Что означает STATUS_RING_NEWLY_EMPTY
STATUS_RING_NEWLY_EMPTY — статус перехода состояния: после удаления текущего пакета указанный кольцевой буфер не содержит больше элементов. Сам по себе он не означает повреждение данных.
Что проверить
Если пустой ring ожидаем, consumer должен завершить текущий цикл обработки или перейти в режим ожидания нового уведомления. Если статус появляется преждевременно, зафиксируйте состояние очереди в момент извлечения последнего элемента.
- Сохраните старую и новую позицию чтения, наблюдаемую позицию записи и размер удалённого пакета.
- Проверьте порядок публикации producer и чтения consumer, включая требуемые memory barriers для конкретного ring API.
- Убедитесь, что новый пакет не был опубликован конкурентно уже после того, как consumer принял решение о пустом буфере.
Как подтвердить исправление
В трассировке последовательность индексов должна показывать законный переход к пустому состоянию либо корректное обнаружение конкурентно опубликованного пакета. Не заменяйте этот статус общим retry-циклом: правильная реакция зависит от контракта уведомлений конкретного кольцевого буфера.
Технические ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.