Join GitHub today
GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together.Sign up
Scylla generated coredump when fail to allocate_segment #2924
Platform (physical/VM/cloud instance type/docker):
I suspect that compaction_lock set region_impl::_reclaiming_enabled false and didn't reset it to true, thus compact_and_evict couldn't reclaim and compact that region.
The core dump file is on the intranet, it's not easy to upload here.
@frank8989 It looks like you are running with
If you didn't have that flag enabled, what would happen is the exception would propagate up to the allocating section code, which would unlock the region, then increase the amount of reserves, then reclaim, and retry the operation. It's likely that the operation would then succeed. The problem here is that
From frame 2:
From frame 7:
It's the same region_impl. In allocating_section, scylla has catch std::bad_alloc and call refill_emergency_reserve without reclaim_lock to compact and evict some segments.
So, we should not call abort() in allocate_segment, just return nullptr.