Что означает код HRESULT 0x80630703 (PEER_E_CHAIN_TOO_LONG)?

 
Предыдущий Следующий
PEER_E_INVITATION_NOT_TRUSTED PEER_E_INVALID_TIME_PERIOD

PEER_E_CHAIN_TOO_LONG

Переход состояния, представленный HRESULT

PEER_E_CHAIN_TOO_LONG — HRESULT 0x80630703 означает, что выдача invitation или group membership credential увеличила бы цепочку Group Membership Certificate сверх поддерживаемой глубины. PEER_E_CHAIN_TOO_LONG — Ранее успешный вызов не гарантирует, что позднее полученные дескриптор, identity, запись или сетевое присутствие всё ещё действительны.

Восстановите последовательность событий

  1. Определите первый вызов среди PeerGroupIssueCredentials и PeerGroupCreateInvitation, вернувший HRESULT.
  2. Сохраните полную GMC issuer chain, role каждого issuer, длину цепочки, identity предполагаемого member и administrator, выполнявшего issuance.
  3. Сопоставьте события graph, group, PNRP и collaboration с cancellation, disconnect, shutdown и sign-out приложения.
  4. Выполните узкое сравнение: выдайте credential от group creator или administrator с более короткой цепочкой и сравните с выдачей от самого глубокого administrator.

Peer Grouping добавляет поверх graphing и PNRP учётные данные членства, роли, подпись записей и зашифрованные соединения. Local open state, online connection state и authorization state — разные состояния.

Матрица интерпретации

НаблюдениеИнтерпретация для PEER_E_CHAIN_TOO_LONG
Ни один create/open/enumerate вызов не вернул объектСбой находится выше по цепочке, до group membership, описываемого здесь.
Сначала произошло событие close, delete, disconnect, expiration или sign-outИсследуйте гонку lifecycle объекта до предположений о malformed network data.
Контролируемый запуск продвигается до другого HRESULTИсходная GMC trust chain исправлена, а новый код называет следующую неудовлетворённую предпосылку.

Ближайший альтернативный диагноз

PEER_E_CIRCULAR_CHAIN_DETECTED отличается тем, что chain-too-long имеет корректную линейную цепочку чрезмерной глубины, а circular-chain повторяет issuer/subject path. Оба кода могут появиться в одном workflow, но не требуют одинакового исправления.

Исправление и подтверждение

обновите credential или выдайте его из более короткой авторизованной ветви; не удаляйте group database, поскольку ограничивающее состояние — иерархия credentials. Проверяйте результат перечислением ожидаемых records, members, connections, endpoints или presence state, а не только исчезновением ошибки вызова.

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

Фиксируйте первый неудачный вызов, а не более поздний результат cleanup. Решающее доказательство: полная GMC issuer chain, role каждого issuer, длина цепочки, intended member identity и administrator, выполнявший issuance.

Регрессионный уровеньПроверяемый случайУсловие прохождения
Входные данные и время жизни объектаСоздайте минимальный объект, достигающий состояния, где выдача invitation/group membership credential превысила бы поддерживаемую глубину Group Membership Certificate chain.Тест записывает owning handle, user context и точный API из PeerGroupIssueCredentials и PeerGroupCreateInvitation.
Контролируемое сравнениевыдайте credential от group creator или administrator с более короткой цепочкой и сравните с выдачей от самого глубокого administrator.Между неуспешным и успешным запуском изменяется только целевая GMC trust chain.
Путь восстановленияобновите credential или выдайте его из более короткой авторизованной ветви; не удаляйте group database, поскольку ограничивающее состояние — иерархия credentials.Нужная операция завершается успешно без замены несвязанного role/connectivity state.

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

Исходные материалы


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