Tags: blockarraygroup/scylla
Tags
Revert "Revert "compaction: fix use-after-free when calculating backl… …og after schema change"" This reverts commit 841ceac. It was reverted because the test failed; this turned out due to a miscompile of the test. With this additional fix, the test compiles correctly: --- a/tests/sstable_datafile_test.cc +++ b/tests/sstable_datafile_test.cc @@ -4785,11 +4785,11 @@ SEASTAR_TEST_CASE(backlog_tracker_correctness_after_stop_tracking_compaction) { auto fut = sstables::compact_sstables(sstables::compaction_descriptor(ssts), *cf, sst_gen); bool stopped_tracking = false; for (auto& info : cf._data->cm.get_compactions()) { - if (info->cf == &*cf) { + if (info->cf == cf->schema()->cf_name()) { info->stop_tracking(); stopped_tracking = true; } } BOOST_REQUIRE(stopped_tracking); info->cf is an sstring, and &*cf is a table*. It's not clear how the compiler was able to compare an sstring and a pointer.
sstable/compaction: Use correct schema in the writing consumer Introduced in 2a437ab. regular_compaction::select_sstable_writer() creates the sstable writer when the first partition is consumed from the combined mutation fragment stream. It gets the schema directly from the table object. That may be a different schema than the one used by the readers if there was a concurrent schema alter duringthat small time window. As a result, the writing consumer attached to readers will interpret fragments using the wrong version of the schema. One effect of this is storing values of some columns under a different column. This patch replaces all column_family::schema() accesses with accesses to the _schema memeber which is obtained once per compaction and is the same schema which readers use. Fixes scylladb#4304. Tests: - manual tests with hard-coded schema change injection to reproduce the bug - build/dev/scylla boot - tests/sstable_mutation_test Message-Id: <[email protected]> (cherry picked from commit 58e7ad2)
Update scylla-ami submodule * dist/ami/files/scylla-ami a425887...fe156a5 (1): > scylla_install_ami: update NIC drivers See scylladb/scylla-ami#44
PreviousNext