Files
scylladb/utils
Avi Kivity 1f46133273 Merge "data: make cell::make_collection() exception safe" from Botond
"
Most of the code in `cell` and the `imr` infrastructure it is built on
is `noexcept`. This means that extra care must be taken to avoid rouge
exceptions as they will bring down the node. The changes introduced by
0a453e5d3a did just that - introduced rouge `std::bad_alloc` into this
code path by violating an undocumented and unvalidated assumption --
that fragment ranges passed to `cell::make_collection()` are nothrow
copyable and movable.

This series refactors `cell::make_collection()` such that it does not
have this assumption anymore and is safe to use with any range.

Note that the unit test included in this series, that was used to find
all the possible exception sources will not be currently run in any of
our build modes, due to `SEASTAR_ENABLE_ALLOC_FAILURE_INJECTION` not
being set. I plan to address this in a followup because setting this
flags fails other tests using the failure injection mechanism. This is
because these tests are normally run with the failure injection disabled
so failures managed to lurk in without anyone noticing.

Fixes: #5575
Refs: #5341

Tests: unit(dev, debug)
"

* 'data-cell-make-collection-exception-safety/v2' of https://github.com/denesb/scylla:
  test: mutation_test: add exception safety test for large collection serialization
  data/cell.hh: avoid accidental copies of non-nothrow copiable ranges
  utils/fragment_range.hh: introduce fragment_range_view
2020-01-14 10:01:06 +02:00
..
2018-11-21 00:01:44 +02:00
2018-12-03 14:36:08 +01:00
2018-05-30 14:41:40 +02:00
2018-12-03 14:36:08 +01:00
2019-12-09 09:45:59 -05:00
2018-11-21 00:01:44 +02:00
2018-11-21 00:01:44 +02:00
2019-06-12 13:14:53 +03:00
2018-11-21 00:01:44 +02:00
2019-06-28 16:43:25 +03:00
2019-06-28 16:43:25 +03:00
2018-12-05 21:51:01 +02:00
2018-12-05 21:51:01 +02:00
2019-02-20 08:03:46 -08:00
2018-11-21 00:01:44 +02:00
2018-11-21 00:01:44 +02:00