android — ошибка ввода-вывода RocksDB: блокировка дБ / LOCK: нет доступных блокировок

Я занимаюсь разработкой многопоточного сервера, который хранит и читает информацию из БД. БД реализован с помощью RocksDB.

У меня проблема в том, что когда я получаю доступ к БД из более чем одного потока одновременно, я получаю эту ошибку.

Обычно это означает, что БД не была удалена после ее назначения, но теперь это не имеет смысла, конечно, она не удаляется, она используется другим потоком.

Я знаю, что к самой базе данных обращаются в последовательном порядке, поэтому технически вы никогда не получите два потока, читающих его одновременно, но по крайней мере один из них должен подождать, пока блокировка не будет снята, и затем получить к нему доступ

У кого-нибудь есть идеи, что может произойти?

2

Решение

Проблема заключалась в том, что у меня было 2 объекта rocksdb :: DB * в разных потоках с одинаковым именем базы данных, и я одновременно открывал базу данных из обоих потоков.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]