Site icon EfmSoft

Что означает код HRESULT 0xC00E0056 (MQ_ERROR_STALE_HANDLE)?

 
Предыдущий Следующий
MQ_ERROR_MISSING_CONNECTOR_TYPE MQ_ERROR_TRANSACTION_ENLIST

MQ_ERROR_STALE_HANDLE

Что означает MQ_ERROR_STALE_HANDLE

MQ_ERROR_STALE_HANDLE (0xC00E0056) — Служба Message Queuing была перезапущена. Все открытые дескрипторы очередей следует закрыть.

Дескриптор MSMQ относится к конкретному времени жизни очереди и локальной службы Queue Manager. Удаление/пересоздание очереди или перезапуск MSMQ не «оживляют» старый handle, даже если имя пути после этого выглядит тем же.

Что проверить

  • Сопоставьте время создания handle с перезапуском службы Message Queuing: после перезапуска открытые до него дескрипторы должны считаться недействительными.
  • Закройте старые handles и явно откройте очередь заново; простое повторение операции на прежнем значении handle не является восстановлением.
  • Проверьте код reconnect/retry на гонки: один поток не должен продолжать receive/send через handle, который другой поток уже заменил.

Как подтвердить исправление

Повторяйте исходный сценарий с новым корректно открытым объектом и отдельно проверяйте конкурентный путь. Простое исчезновение ошибки после перезапуска службы не доказывает устранение гонки или ошибки времени жизни.

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


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

Exit mobile version