Я занимаюсь разработкой многопоточного сервера, который хранит и читает информацию из БД. БД реализован с помощью RocksDB.
У меня проблема в том, что когда я получаю доступ к БД из более чем одного потока одновременно, я получаю эту ошибку.
Обычно это означает, что БД не была удалена после ее назначения, но теперь это не имеет смысла, конечно, она не удаляется, она используется другим потоком.
Я знаю, что к самой базе данных обращаются в последовательном порядке, поэтому технически вы никогда не получите два потока, читающих его одновременно, но по крайней мере один из них должен подождать, пока блокировка не будет снята, и затем получить к нему доступ
У кого-нибудь есть идеи, что может произойти?
Проблема заключалась в том, что у меня было 2 объекта rocksdb :: DB * в разных потоках с одинаковым именем базы данных, и я одновременно открывал базу данных из обоих потоков.
Других решений пока нет …