| Предыдущий | Следующий |
| 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.
Вопросы, отделяющие этот сбой
- Был ли объект возвращён PeerGraphListen, получен из graph status/listener shutdown либо восстановлен из кэшированного текста или другого процесса?
- Сохраните call stack listen, выбранные port и scope, graph status, результат предыдущего listen и владельца lifecycle listener.
- Произошли ли shutdown, deletion, sign-out, expiration или replication между выбором объекта и его использованием?
- Завершается ли операция успешно при контролируемом сравнении, описанном ниже?
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_LISTEN | PEER_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 в одной трассировка. Такая запись позволяет регрессионному тесту отличить состояние жизненного цикла графа от последующего сбоя транспорта, авторизации или приложения.
Ссылки
- Microsoft: обзор Peer Graphing API — источник документирует соответствующую peer граница.
- Microsoft Open Specifications: протокол Peer-to-Peer Graphing — источник документирует соответствующую peer граница.
- Microsoft: Security Service Providers for Peer Graphing — источник документирует соответствующую peer граница.
- Microsoft: общие return codes Peer Infrastructure — источник документирует соответствующую peer граница.
Нужно найти другой код? Найти другой код состояния или ошибки.
