Что означает код HRESULT 0x80630305 (PEER_E_DATABASE_ALREADY_PRESENT)?

 
Предыдущий Следующий
PEER_E_MAX_RECORD_SIZE_EXCEEDED PEER_E_DATABASE_NOT_PRESENT

PEER_E_DATABASE_ALREADY_PRESENT

Какой peer contract отклонён

PEER_E_DATABASE_ALREADY_PRESENT — HRESULT 0x80630305 означает, что для сочетания graph ID, peer ID и имени базы, указанного при создании/импорте, локальная база уже существует. PEER_E_DATABASE_ALREADY_PRESENT — Базовое описание сообщает результат; для диагностики нужен контракт данных и жизненный цикл, используемые PeerGraphCreate/Open и импортом базы графа.

Peer-записи объединяют типизированную структуру записи, необязательные доступные для поиска XML-атрибуты, полезную нагрузку, метаданные создателя и срок действия. Локальная база может получать записи в порядке, отличающемся от зависимостей приложения.

Минимальный диагностический пакет

ЭлементДоказательство
Исходные данныеСохраните целевой путь, graph ID и peer ID, hash существующей базы, режим создания/импорта и намерение приложения: открыть, заменить или импортировать.
Контекст-владелецЗапишите Windows user, process integrity, graph/group handle, database path и выбранный cloud.
Предыдущий успехСохраните последний успешный результат create/open/enumerate/parse/register/sign-in, создавший объект.
Порядок результатовСохраняйте первый HRESULT, чтобы cleanup failures не заменили код, отклонивший запрос.

Целевое воспроизведение

используйте для импорта чистую временную цель и сравните с исходной занятой целью, не удаляя ни одну из баз. Используйте disposable identities/groups, если тест публикует names, создаёт credentials или изменяет replicated database.

Почему код сравнения отличается

PEER_E_DUPLICATE_GRAPH отличается тем, что database-already-present относится к identity постоянного хранилища, а duplicate-graph — к конфликту объекта графа внутри процесса. Диагностический отчёт должен сохранять symbolic constant и unsigned hexadecimal value.

Рекомендуемое изменение

откройте существующую базу, если именно она нужна, либо явно выберите новую цель для импорта; не заменяйте реплицируемое состояние без явного решения. Не удаляйте все peer databases, certificate store или firewall rules: широкие сбросы стирают доказательства и не подтверждают исправление caller contract.

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

  • Исходный input теперь проходит точную проверку, представленную этим HRESULT.
  • Операция достигает требуемого результата для графа, группы, записи, PNRP или Peer Collaboration.
  • Несвязанные identity material, membership credentials и replicated records остаются неизменными.

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

Фиксируйте первый неудачный вызов, а не более поздний результат cleanup. Решающее значение имеют целевой путь, graph ID и peer ID, hash существующей базы, режим создания/импорта и намерение приложения: открыть, заменить или импортировать.

Регрессионный уровеньПроверяемый случайУсловие прохождения
Входные данные и время жизни объектаПостройте минимальный сценарий, в котором для указанного при создании/импорте сочетания graph ID, peer ID и имени базы локальная база уже существует.В тесте фиксируются владеющий дескриптор, контекст пользователя и точный API из PeerGraphCreate/Open и импорта базы графа.
Контролируемое сравнениеиспользуйте для импорта чистую временную цель и сравните с исходной занятой целью, не удаляя ни одну из баз.Между неудачным и успешным запуском меняется только нужное локальное реплицируемое хранилище.
Путь восстановленияоткройте существующую базу, если именно она нужна, либо явно выберите новую цель для импорта; не заменяйте реплицируемое состояние без явного решения.Нужная операция завершается успешно без замены несвязанных метаданных поиска и срока действия.

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

Технические ссылки


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