我们已经使用RocksDb多年了。有一个(.NET)进程使用RocksDbSharp生成RocskDb数据。有一个C++库来读取它们。都是2018年左右的事。两者都使用Snappy压缩。C++库是在C++ 11下编译的。
我们正在尝试升级到更新的RocksDb。在单元测试中,新的C++库可以创建新文件并读取它们。但是,在访问现有数据时,它会在第一个rocksdb::DB::Open调用上崩溃(分段错误)。更具体地说,调用堆栈转到LoadTableHandlers。
这是源代码,没有什么特别之处:
rocksdb::DB* db;
rocksdb::Options options;
options.compression = rocksdb::CompressionType::kSnappyCompression;
options.create_if_missing = false;
rocksdb::Status status = rocksdb::DB::Open(options, myValidPath, &db);请参见下面的调用堆栈。
rocksdb::VersionBuilder::Rep::LoadTableHandlers(rocksdb::InternalStats*,int,bool,bool,std::shared_ptr const&,未签名长) 0x00000000009747d8 rocksdb::VersionBuilder::LoadTableHandlers(rocksdb::InternalStats*,int,bool,bool,0x000000007e86fb rocksdb::VersionEditHandler::LoadTables(rocksdb::ColumnFamilyData*,bool,bool) 0x00000000007e86fb rocksdb::VersionEditHandler::LoadTables(rocksdb::ColumnFamilyData*,bool,bool)0x0000000000007e86fb rocksdb::VersionEditHandler::LoadTables(rocksdb::ColumnFamilyData*,bool,bool)0x00000000007e86e86fb rocksdb::VersionEditHandler::LoadTables(rocksdb::ColumnFamilyData*,bool,bool)0x0000000000007ea 471 rocksdb::VersionEditHandler::CheckIterationResult(rocksdb::log::Reader const&,rocksdb::VersionEditHandler::CheckIterationResult(rocksdb::log::Reader const&,rocksdb::VersionEditHandler::CheckIterationResult(rocksdb::log::Reader const&,0x0000000000007e86fb rocksdb::VersionEditHandler::LoadTables(rocksdb::ColumnFamilyData*,bool,bool)rocksdb::VersionEditHandlerBase::Iterate(rocksdb::log::Reader&,rocksdb::Status*) 0x000000007ec8c8 rocksdb::VersionSet::Recover(std::vector const&,bool,std::__cxx11::basic_string,bool) 0x0000000000005bc135 rocksdb::DBImpl::Recover(std::vector const&,std::vector const&,std::vector* *,rocksdb:DB**,bool,bool)std::char_traits,std::allocator > const&,rocksdb::DB**) 0x000000000056b88f主TestMain.cpp:131 __tmainCRTStartup 0x00000000004013c7 mainCRTStartup 0x00000000004014fb BaseThreadInitThunk 0x00007ff8a174b4 RtlUserThreadStart 0x0000000056b88f__tmainCRTStartup 0x00000000000000000000 000
我们需要在选项中做些调整吗?
https://stackoverflow.com/questions/74507180
复制相似问题