Как полностью отключить Rocksdb? - PullRequest
0 голосов
/ 22 сентября 2018

Я использую Rocksdb в приложении, и после закрытия всех экземпляров db я все еще вижу потоки с этим запущенным rockdb :: ThreadPoolImpl :: Impl :: BGThread (unsigned long) ()

Поэтому, когда я закрываю приложение, я получаю ошибку libc ++ abi.dylib: terminating, которая, по моему мнению, связана с вышеизложенным.Как я могу избежать этого и убедиться, что эти потоки отключены?Спасибо

1 Ответ

0 голосов
/ 23 сентября 2018

Существует множество фоновых процессов, работающих в rockdb, таких как Compaction, memtable flush, которые обрабатываются отдельными потоками.Чтобы безопасно закрыть ROCKSDB, вы должны отменить все запущенные фоновые задания.

CancelAllBackgroundWork(bool);

Вызовите эту функцию, прежде чем закрывать БД.Передайте bool в качестве аргумента, хотите ли вы немедленно прекратить или дождаться завершения фоновых заданий, а затем завершить их.

Вызов rocksdb_close() теперь полностью отключит БД

...