assert failed in VersionSet::ApproximateSize
- Dominant language
- C++
- Stars
- 32.1k
- Forks
- 6.9k
- Avg merge
- 32m
- Merged PRs (30d)
- 1
Description
> Note: Please use Issues only for bug reports. For questions, discussions, feature requests, etc. post to dev group: https://www.facebook.com/groups/rocksdb.dev
### Expected behavior
no failed assert
### Actual behavior
Assert failed with the following backtrace:
```
* thread #11: tid = 0x3608cd, 0x00007fff7a863b66 libsystem_kernel.dylib`__pthread_kill + 10, stop reason = signal SIGABRT
* frame #0: 0x00007fff7a863b66 libsystem_kernel.dylib`__pthread_kill + 10
frame #1: 0x00007fff7aa2e080 libsystem_pthread.dylib`pthread_kill + 333
frame #2: 0x00007fff7a7bf1ae libsystem_c.dylib`abort + 127
frame #3: 0x00007fff7a7871ac libsystem_c.dylib`__assert_rtn + 320
frame #4: 0x000000010196e4be librocksdb.5.15.10.dylib`rocksdb::VersionSet::ApproximateSize(rocksdb::Version*, rocksdb::Slice const&, rocksdb::Slice const&, int, int) + 1070
frame #5: 0x00000001014b0858 librocksdb.5.15.10.dylib`rocksdb::CompactionJob::GenSubcompactionBoundaries() + 5240
frame #6: 0x00000001014aead1 librocksdb.5.15.10.dylib`rocksdb::CompactionJob::Prepare() + 657
frame #7: 0x000000010160bb58 librocksdb.5.15.10.dylib`rocksdb::DBImpl::BackgroundCompaction(bool*, rocksdb::JobContext*, rocksdb::LogBuffer*, rocksdb::DBImpl::PrepickedCompaction*) + 18216
frame #8: 0x0000000101605f85 librocksdb.5.15.10.dylib`rocksdb::DBImpl::BackgroundCallCompaction(rocksdb::DBImpl::PrepickedCompaction*, rocksdb::Env::Priority) + 1045
frame #9: 0x0000000101603515 librocksdb.5.15.10.dylib`rocksdb::DBImpl::BGWorkCompaction(void*) + 277
frame #10: 0x0000000102109a99 librocksdb.5.15.10.dylib`rocksdb::ThreadPoolImpl::Schedule(void (*)(void*), void*, void*, void (*)(void*))::$_0::operator()() const + 25
frame #11: 0x0000000102109a6d librocksdb.5.15.10.dylib`void std::__1::__invoke_void_return_wrapper::__call(rocksdb::ThreadPoolImpl::Schedule(void (*)(void*), void*, void*, void (*)(void*))::$_0&&&) + 45
frame #12: 0x000000010210998c librocksdb.5.15.10.dylib`std::__1::__function::__func, void ()>::operator()() + 44
frame #13: 0x0000000101927fb1 librocksdb.5.15.10.dylib`std::__1::function::operator()() const + 129
frame #14: 0x0000000102106602 librocksdb.5.15.10.dylib`rocksdb::ThreadPoolImpl::Impl::BGThread(unsigned long) + 1666
frame #15: 0x000000010210682c librocksdb.5.15.10.dylib`rocksdb::ThreadPoolImpl::Impl::BGThreadWrapper(void*) + 284
frame #16: 0x000000010211d02d librocksdb.5.15.10.dylib`void* std::__1::__thread_proxy >(void*) + 429
frame #17: 0x00007fff7aa2b661 libsystem_pthread.dylib`_pthread_body + 340
frame #18: 0x00007fff7aa2b50d libsystem_pthread.dylib`_pthread_start + 377
frame #19: 0x00007fff7aa2abf9 libsystem_pthread.dylib`thread_start + 13
```
### Steps to reproduce the behavior
The problem arises when calculating the size of the database with my function "int DataBaseROCKS :: get_db_size (INT64 * p_db_size))".
In this function, we call:
_db-> DisableFileDeletions (); // so list of file will not change until enable deletion
followed by
_db-> GetLiveFiles (liveFileList, & manifest_size);
The flush_memtable parameter is set to true by default, triggering a "Flush" of tables in memory on the disk.
With the value false, the problem seems to have disappeared.
Contributor guide
Assessment
This issue has not been assessed yet.