| Предыдущий | Следующий |
| ERROR_OPERATION_NOT_SUPPORTED_IN_TRANSACTION | ERROR_TRANSACTION_NOT_ENLISTED |
ERROR_EXPIRED_HANDLE
Что означает ERROR_EXPIRED_HANDLE
ERROR_EXPIRED_HANDLE означает, что ранее полученный транзакционный handle больше недействителен для текущего состояния KTM/TxF. Дескриптор может истечь после commit, rollback, recovery или завершения объекта, с которым он был связан.
Что проверить
- Сопоставьте момент создания handle с transaction ID и всеми последующими переходами commit/rollback/recovery.
- Проверьте, не сохраняется ли process-local handle в очереди фоновой работы дольше срока жизни транзакции.
- После перезапуска Resource Manager не пытайтесь использовать числовое значение старого дескриптора как постоянную ссылку.
Как исправить
Заново откройте необходимый объект в рамках актуальной транзакции и ограничьте lifetime дескриптора lifetime этой транзакции. Повтор той же операции со stale handle всегда остаётся некорректным.
Как подтвердить исправление
После каждого перехода transaction state старые handles освобождаются, а последующие операции получают новые дескрипторы, связанные с действующим контекстом.
Технические ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.