Skip to content

BUG: MultiBatchWrite crash while writeCallback::AllowWriteBatch returns false #369

@mzygQAQ

Description

@mzygQAQ

Note: Please use Issues only for bug reports. For questions, discussions, feature requests, etc. post to dev group: https://groups.google.com/forum/#!forum/rocksdb or https://www.facebook.com/groups/rocksdb.dev

Expected behavior

works well

Actual behavior

crash in debug profile

Steps to reproduce the behavior

(gdb) bt
#0  0x00007ffff6f0d1f7 in raise () from /lib64/libc.so.6
#1  0x00007ffff6f0e8e8 in abort () from /lib64/libc.so.6
#2  0x00007ffff6f06266 in __assert_fail_base () from /lib64/libc.so.6
#3  0x00007ffff6f06312 in __assert_fail () from /lib64/libc.so.6
#4  0x0000555559a774d3 in rocksdb::port::Mutex::AssertHeld() ()
#5  0x00005555596801b6 in rocksdb::InstrumentedMutex::AssertHeld() ()
#6  0x000055555968642c in rocksdb::DBImpl::WaitForPendingWrites() ()
#7  0x00005555596ed0da in rocksdb::DBImpl::MultiBatchWriteImpl(rocksdb::WriteOptions const&, std::vector<rocksdb::WriteBatch*, std::allocator<rocksdb::WriteBatch*> >&&, rocksdb::WriteCallback*, unsigned long*, unsigned long, unsigned long*) ()
#8  0x00005555596ee64e in rocksdb::DBImpl::WriteImpl(rocksdb::WriteOptions const&, rocksdb::WriteBatch*, rocksdb::WriteCallback*, unsigned long*, unsigned long, bool, unsigned long*, unsigned long, rocksdb::PreReleaseCallback*) ()
#9  0x00005555596ecd2f in rocksdb::DBImpl::WriteWithCallback(rocksdb::WriteOptions const&, rocksdb::WriteBatch*, rocksdb::WriteCallback*) ()
#10 0x0000555559d6e3b6 in rocksdb::titandb::BlobGCJob::RewriteValidKeyToLSM() ()
#11 0x0000555559d6d56b in rocksdb::titandb::BlobGCJob::Finish() ()
#12 0x0000555559abfe59 in rocksdb::titandb::TitanDBImpl::BackgroundGC(rocksdb::LogBuffer*, unsigned int) ()
#13 0x0000555559abf5f3 in rocksdb::titandb::TitanDBImpl::BackgroundCallGC() ()
#14 0x0000555559abf4a2 in rocksdb::titandb::TitanDBImpl::BGWorkGC(void*) ()

WaitForPendingWrites requires mutex_.AssertHeld() but not, this only occurs in titan' gc job who will set AllowWriteBatching=false

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions