| Предыдущий | Следующий |
| STATEREPOSITORY_E_BUSY_RECOVERY_RETRY | STATEREPOSITORY_E_LOCKED_SHAREDCACHE_RETRY |
STATEREPOSITORY_E_LOCKED_RETRY
LOCKED_RETRY — это конфликт на уровне таблицы или connection sharing
0x80670009 сообщает о блокировке, при которой вызывающая сторона может повторить операцию после продвижения владельца lock. Он уже уже, чем BUSY_RETRY: доступность database file сама по себе не исключает table contention.
Что искать в trace
- Таблицу и connection, на которых удерживается ownership.
- Незавершённый prepared statement и transaction generation.
- Порядок writers и момент, когда owning transaction реально освобождает lock.
Документация формулирует различие так: BUSY_RETRY is database-level contention; LOCKED_RETRY is a narrower table or connection-sharing conflict.
Дополнительные connections не являются лечением и могут воспроизвести тот же цикл владения.
Контрольный эксперимент
Завершите или reset-ните statement-владельца, сериализуйте writers для той же таблицы и повторите запрос только после перехода transaction state. Успешный двухсоединительный тест должен не оставлять statement активным между несвязанными операциями.
Технические ссылки
- Microsoft Win32 metadata: winerror.h.
- SQLite: File locking and concurrency.
- SQLite: Result and extended result codes.
- SQLite: Shared-cache locking model.
Нужно найти другой код? Найти другой код состояния или ошибки.