Site icon EfmSoft

Что означает код HRESULT 0x80630107 (PEER_E_ALREADY_LISTENING)?

 
Предыдущий Следующий
PEER_E_CONNECT_SELF PEER_E_NODE_NOT_FOUND

PEER_E_ALREADY_LISTENING

PEER_E_ALREADY_LISTENING — HRESULT 0x80630107 означает, что graph уже вошёл в состояние listening и второй listen request был выдан без остановки или закрытия первого listener. PEER_E_ALREADY_LISTENING — Исследуйте первый API, сообщивший этот результат, а не более поздний UI wrapper.

Вопросы, отделяющие этот сбой

Peer Graphing поддерживает связанный набор nodes, реплицирует records и имеет отдельные lifetimes graph, node, connection и event. Открытая graph database не означает, что node подключён.

Контролируемое сравнение

один раз вызовите listen, запросите status, затем намеренно вызовите его повторно с тем же graph handle до закрытия listener. Сохраняйте identity, graph/group ID, cloud и user context неизменными, если только один из них не является проверяемой переменной.

Таблица решений

Наблюдаемый результатСледующее действие для PEER_E_ALREADY_LISTENING
HRESULT повторяется при идентичном зафиксированном состоянииПроверьте контракт вызывающего кода и состояние node/connection; повторные сетевые попытки не добавят доказательств.
Вызов продвигается до PEER_E_UNABLE_TO_LISTENPEER_E_UNABLE_TO_LISTEN отличается тем, что already-listening означает наличие активного listener, а unable-to-listen — невозможность создать запрошенный listener.
Контролируемый запуск успешен, production — нетСравните user token, database path, cloud, endpoint, certificate chain и фактическую firewall policy.

Безопасное исправление и проверка

сделайте listening идемпотентным на уровне приложения и назначьте одного владельца graph listener. Перед изменениями создайте резервные копии экспортируемой identity и group configuration и сохраните hashes database/invitation artifacts.

Исправление подтверждено только когда нужная операция успешна, а полученные соединения, записи, членство, endpoint или область Peer Collaboration можно независимо перечислить.

Инструментирование и регрессионное покрытие

Фиксируйте первый неудачный вызов, а не более поздний результат cleanup. Решающее доказательство: call stack listen, выбранные port и scope, graph status, предыдущий listen result и владение lifecycle listener.

Регрессионный уровеньПроверяемый случайУсловие прохождения
Входные данные и время жизни объектаСоздайте минимальный объект, достигающий состояния, где graph уже слушает и второй listen request выдан без остановки/закрытия первого listener.Тест записывает owning handle, user context и точный API из PeerGraphListen, graph status и listener shutdown.
Контролируемое сравнениеодин раз вызовите listen, запросите status, затем намеренно вызовите его повторно с тем же graph handle до закрытия listener.Между неуспешным и успешным запуском изменяется только целевое состояние node или connection.
Путь восстановлениясделайте listening идемпотентным на уровне приложения и назначьте одного владельца graph listener.Нужная операция завершается успешно без замены несвязанной replicated graph database.

Сохраняйте unsigned hexadecimal HRESULT, symbolic names и timestamps в одной трассировка. Такая запись позволяет регрессионному тесту отличить состояние жизненного цикла графа от последующего сбоя транспорта, авторизации или приложения.

Ссылки


Нужно найти другой код? Найти другой код состояния или ошибки.

Exit mobile version