Что означает код HRESULT 0x80630106 (PEER_E_CONNECT_SELF)?

 
Предыдущий Следующий
PEER_E_CONNECTION_NOT_FOUND PEER_E_ALREADY_LISTENING

PEER_E_CONNECT_SELF

Где peer stack отклоняет операцию

PEER_E_CONNECT_SELF — HRESULT 0x80630106 означает, что запрос прямого соединения разрешился в локальный узел вместо отдельного peer. PEER_E_CONNECT_SELF — Рассматривайте это как результат жизненного цикла графа, а не как общий сбой peer-сети.

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

Данные, которые нужно сохранить до повтора

  • Зафиксируйте первый отказ среди PeerGraphOpenDirectConnection или PeerGroupOpenDirectConnection и перечисления узлов.
  • Сохраните локальный node ID и адреса, целевой node ID, список разрешённых endpoint, identity графа/группы и алгоритм выбора endpoint.
  • Поместите успешное создание/discovery, события изменения состояния и неудачный вызов на одну timeline.
  • Сохраняйте peer name, identity, идентификаторы записей, данные приглашений и endpoint в исходном представлении Unicode или в двоичном виде.

Контролируемая изоляция

исключите локальный узел из перечисления и сравните попытку соединения с заведомо удалённым узлом с попыткой через локальную запись. Меняйте только одну переменную; одновременные изменения identity, cloud, database и firewall state уничтожают причинную привязку.

Контрольная точкаВопрос для PEER_E_CONNECT_SELF
До APIБыло ли требуемое состояние узла или соединения получено в этом процессе и контексте пользователя?
На HRESULTСохраните локальный node ID и адреса, целевой node ID, список разрешённых endpoint, identity графа/группы и алгоритм выбора endpoint.
После исправленияотбрасывайте собственные endpoint до открытия прямого соединения и не смешивайте identity узла с отображаемыми или friendly names.

Соседний результат

PEER_E_PNRP_DUPLICATE_PEER_NAME отличается тем, что дублированная публикация может дать несколько endpoint для одного имени, но непосредственный дефект здесь — соединение с собственным локальным endpoint. Сохраняйте оба HRESULT в хронологическом порядке: исправление предпосылки может открыть следующий этап validation.

Безопасная реакция

отбрасывайте собственные endpoint до открытия прямого соединения и не смешивайте identity узла с отображаемыми или friendly names. Перед изменениями сохраняйте durable graph databases, group exports, identity certificates и invitation artifacts.

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

Фиксируйте первый неудачный вызов, а не более поздний результат cleanup. Решающее значение имеют локальный node ID и адреса, целевой node ID, список разрешённых endpoint, identity графа/группы и алгоритм выбора endpoint.

Регрессионный уровеньПроверяемый случайУсловие прохождения
Входные данные и время жизни объектаПостройте минимальный сценарий, в котором запрос прямого соединения выбирает локальный узел вместо другого peer.В тесте фиксируются владеющий дескриптор, контекст пользователя и точный API из PeerGraphOpenDirectConnection или PeerGroupOpenDirectConnection и перечисления узлов.
Контролируемое сравнениеисключите локальный узел из перечисления и сравните попытку соединения с заведомо удалённым узлом с попыткой через локальную запись.Между неуспешным и успешным запуском изменяется только целевое состояние node или connection.
Путь восстановленияотбрасывайте собственные endpoint до открытия прямого соединения и не смешивайте identity узла с отображаемыми или friendly names.Нужная операция завершается успешно без замены несвязанной replicated graph database.

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

Ссылки


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