Skip to content

Commit

Permalink
WIP test: mutation_source_test: test_compaction_strategy_composite_ke…
Browse files Browse the repository at this point in the history
…y_clustering_slicing

test/lib/mutation_source_test.cc:1086:63: runtime error: reference binding to null pointer of type 'const struct column_definition'
mutation_partition.cc:1212:22: runtime error: member access within null pointer of type 'const struct column_definition'
AddressSanitizer:DEADLYSIGNAL
=================================================================
==250886==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000050 (pc 0x00000ccc8820 bp 0x7f2dcb0a6a20 sp 0x7f2dcb0a6890 T1)
==250886==The signal is caused by a READ memory access.
==250886==Hint: address points to the zero page.

    #0 0xccc8820 in row::apply_monotonically(column_definition const&, atomic_cell_or_collection&&, seastar::optimized_optional<cell_hash>) /local/home/bhalevy/dev/scylla/mutation_partition.cc:1212
    scylladb#1 0xccc8661 in row::apply(column_definition const&, atomic_cell_or_collection&&, seastar::optimized_optional<cell_hash>) /local/home/bhalevy/dev/scylla/mutation_partition.cc:1180
    scylladb#2 0xc872a18 in mutation::set_clustered_cell(clustering_key_prefix const&, column_definition const&, atomic_cell_or_collection&&) /local/home/bhalevy/dev/scylla/mutation.cc:77
    scylladb#3 0x132288ab in test_compaction_strategy_composite_key_clustering_slicing test/lib/mutation_source_test.cc:1094
    scylladb#4 0x1322b9ef in test_all_compaction_strategies_clustering_slicing test/lib/mutation_source_test.cc:1134
    scylladb#5 0x1324e25a in run_mutation_reader_tests(std::function<mutation_source (seastar::lw_shared_ptr<schema const>, std::vector<mutation, std::allocator<mutation> > const&, std::chrono::time_point<gc_clock, std::chrono::duration<long, std::ratio<1l, 1l> > >)>) test/lib/mutation_source_test.cc:1495
    scylladb#6 0x132513bb in run_mutation_source_tests(std::function<mutation_source (seastar::lw_shared_ptr<schema const>, std::vector<mutation, std::allocator<mutation> > const&, std::chrono::time_point<gc_clock, std::chrono::duration<long, std::ratio<1l, 1l> > >)>) test/lib/mutation_source_test.cc:1556
    scylladb#7 0xbcbf8c1 in test_mutation_source test/boost/sstable_conforms_to_mutation_source_test.cc:45
    scylladb#8 0xbcc019d in operator() test/boost/sstable_conforms_to_mutation_source_test.cc:62
    scylladb#9 0xbcc6cfd in __invoke_impl<void, test_sstable_conforms_to_mutation_source::run_test_case()::<lambda()> > /usr/include/c++/10/bits/invoke.h:60
    scylladb#10 0xbcc5ccf in __invoke<test_sstable_conforms_to_mutation_source::run_test_case()::<lambda()> > /usr/include/c++/10/bits/invoke.h:95
    scylladb#11 0xbcc3f91 in __apply_impl<test_sstable_conforms_to_mutation_source::run_test_case()::<lambda()>, std::tuple<> > /usr/include/c++/10/tuple:1723
    scylladb#12 0xbcc3ff7 in apply<test_sstable_conforms_to_mutation_source::run_test_case()::<lambda()>, std::tuple<> > /usr/include/c++/10/tuple:1734
    scylladb#13 0xbcc407a in apply<test_sstable_conforms_to_mutation_source::run_test_case()::<lambda()> > /local/home/bhalevy/dev/scylla/seastar/include/seastar/core/future.hh:1978
    scylladb#14 0xbcc1840 in operator() /local/home/bhalevy/dev/scylla/seastar/include/seastar/core/thread.hh:259
    scylladb#15 0xbcc7e10 in call /local/home/bhalevy/dev/scylla/seastar/include/seastar/util/noncopyable_function.hh:101
    scylladb#16 0xbfadb8f in seastar::noncopyable_function<void ()>::operator()() const /local/home/bhalevy/dev/scylla/seastar/include/seastar/util/noncopyable_function.hh:184
    scylladb#17 0x142ef646 in seastar::thread_context::main() /local/home/bhalevy/dev/scylla/seastar/src/core/thread.cc:297

AddressSanitizer can not provide additional info.
SUMMARY: AddressSanitizer: SEGV /local/home/bhalevy/dev/scylla/mutation_partition.cc:1212 in row::apply_monotonically(column_definition const&, atomic_cell_or_collection&&, seastar::optimized_optional<cell_hash>)
Thread T1 created by T0 here:
    #0 0x7f2ddba5abe5 in __interceptor_pthread_create (/lib64/libasan.so.6+0x57be5)
    scylladb#1 0x1425bc6b in seastar::posix_thread::posix_thread(seastar::posix_thread::attr, std::function<void ()>) /local/home/bhalevy/dev/scylla/seastar/src/core/posix.cc:95
    scylladb#2 0x1425b84f in seastar::posix_thread::posix_thread(std::function<void ()>) /local/home/bhalevy/dev/scylla/seastar/src/core/posix.cc:65
    scylladb#3 0x14a67480 in make_unique<seastar::posix_thread, seastar::testing::test_runner::start(int, char**)::<lambda()> > /usr/include/c++/10/bits/unique_ptr.h:961
    scylladb#4 0x14a63e8a in seastar::testing::test_runner::start(int, char**) /local/home/bhalevy/dev/scylla/seastar/src/testing/test_runner.cc:108
    scylladb#5 0x14a58b52 in init_unit_test_suite /local/home/bhalevy/dev/scylla/seastar/src/testing/entry_point.cc:47
    scylladb#6 0x7f2dda3d2cec  (/lib64/libboost_unit_test_framework.so.1.69.0+0x2ccec)

==250886==ABORTING

Signed-off-by: Benny Halevy <bhalevy@scylladb.com>
  • Loading branch information
bhalevy committed Jul 20, 2020
1 parent c55b511 commit 461f459
Showing 1 changed file with 50 additions and 0 deletions.
50 changes: 50 additions & 0 deletions test/lib/mutation_source_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1069,6 +1069,55 @@ static void test_compaction_strategy_static_row_clustering_slicing(populate_fn_e
}
}

static void test_compaction_strategy_composite_key_clustering_slicing(populate_fn_ex populate, compaction_strategy_type cs) {
testlog.info(__PRETTY_FUNCTION__);

auto builder = schema_builder("ks", "cf")
.with_column("pk", utf8_type, column_kind::partition_key)
.with_column("ck1", utf8_type, column_kind::clustering_key)
.with_column("ck2", utf8_type, column_kind::clustering_key)
.with_column("v", int32_type);

auto s = builder
.set_compaction_strategy(cs)
.build();

auto pkey = dht::decorate_key(*s, partition_key::from_single_value(*s, serialized("pk")));
const column_definition& v_col = *s->get_column_definition("r1");

auto make_ckey = [&s] (sstring v1, sstring v2) {
return clustering_key::from_exploded(*s, {to_bytes(v1), to_bytes(v2)});
};

mutation m1(s, pkey);
auto ckey = make_ckey("a", "0");
m1.set_clustered_cell(ckey, v_col, atomic_cell::make_live(*int32_type, 0, int32_type->decompose(1)));

mutation_source ms = populate(s, {m1}, gc_clock::now());

// query row outside the range of existing rows to exercise sstable clustering key filter
{
auto range = query::clustering_range::make({make_ckey("a", "1")}, {make_ckey("a", "2")});
auto slice = partition_slice_builder(*s)
.with_range(range)
.build();
auto prange = dht::partition_range::make_singular(pkey);
assert_that(ms.make_reader(s, tests::make_permit(), prange, slice))
.produces(m1, slice.row_ranges(*s, pkey.key()))
.produces_end_of_stream();
}

{
auto slice = partition_slice_builder(*s)
.with_range(query::clustering_range::make_singular(make_ckey("a", "0")))
.build();
auto prange = dht::partition_range::make_singular(pkey);
assert_that(ms.make_reader(s, tests::make_permit(), prange, slice))
.produces(m1)
.produces_end_of_stream();
}
}

static void test_all_compaction_strategies_clustering_slicing(populate_fn_ex populate) {
constexpr std::array<compaction_strategy_type, 6> all_compaction_strategies = {
compaction_strategy_type::null,
Expand All @@ -1082,6 +1131,7 @@ static void test_all_compaction_strategies_clustering_slicing(populate_fn_ex pop
for (auto cs : all_compaction_strategies) {
test_compaction_strategy_clustering_row_clustering_slicing(populate, cs);
test_compaction_strategy_static_row_clustering_slicing(populate, cs);
test_compaction_strategy_composite_key_clustering_slicing(populate, cs);
}
}

Expand Down

0 comments on commit 461f459

Please sign in to comment.