mirror of
https://github.com/scylladb/scylladb.git
synced 2026-04-27 20:05:10 +00:00
" There's a landmine buried in range_rombstone's move constructor. Whoever tries to use it risks grabbing the tombstone from the containing list thus leaking the guy optionally invalidating an iterator pointing at it. There's a safety without_link moving constructor out there, but still. To keep this place safe it's better to separate range_tombstone from its linkage into anywhere. In particular to keep the range tombstones in a range_tombstone_list here's the entry that keeps the tombstone _and_ the list hook (which's a boost set hook). The approach resembles the rows_entry::deletable_row pair. tests: unit(dev, debug, patch from #9207) fixes: #9243 " * 'br-range-tombstone-vs-entry' of https://github.com/xemul/scylla: range_tombstone: Drop without-link constructor range_tombstone: Drop move_assign() range_tombstone: Move linkage into range_tombstone_entry range_tombstone_list: Prepare to use range_tombstone_entry range_tombstone, code: Add range_tombstone& getters range_tombstone_list: Factor out tombstone construction range_tombstone_list: Simplify (maybe) pop_front_and_lock() range_tombstone_list: De-templatize pop_as<> range_tombstone_list: Conceptualize erase_where() range_tombstone(_list): Mark some bits noexcept mutation: Use range_tombstone_list's iterators mutation_partition: Shorten memory usage calculation mutation_partition: Remove unused local variable