facebook / facebook/rocksdb

assert failed in VersionSet::ApproximateSize

Open
#4,707 4 comments 0 reactions 0 assignees View on GitHub
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.