mirror of
https://github.com/scylladb/scylladb.git
synced 2026-05-24 00:32:15 +00:00
"Scylla 1.7.4 and older use incorrect ordering of counter shards, this was fixed in0d87f3dd7d("utils::UUID: operator< should behave as comparison of hex strings/bytes"). However, that patch was not backported to 1.7 branch until very recently. This means that versions 1.7.4 and older emit counter shards in an incorrect order and expect them to be so. This is particularly bad when dealing with imported correct sstables in which case some shards may become duplicated. The solution implemented in this patch is to allow any order of counter shards and automaticly merge all duplicates. The code is written in a way so that the correct ordering is expected in the fast path in order not to excessively punish unaffected deployments. A new feature flag CORRECT_COUNTER_ORDER is introduced to allow seamless upgrade from 1.7.4 to later Scylla versions. If that feature is not available Scylla still writes sstables and sends on-wire counters using the old ordering so that it can be correctly understood by 1.7.4, once the flag becomes available Scylla switches to the correct order. Fixes #2752." * tag 'fix-upgrade-with-counters/v2' of https://github.com/pdziepak/scylla: tests/counter: verify counter_id ordering counter: check that utils::UUID uses int64_t mutation_partition_serializer: use old counter ordering if necessary mutation_partition_view: do not expect counter shards to be sorted sstables: write counter shards in the order expected by the cluster tests/sstables: add storage_service_for_tests to counter write test tests/sstables: add test for reading wrong-order counter cells sstables: do not expect counter shards to be sorted storage_service: introduce CORRECT_COUNTER_ORDER feature tests/counter: test 1.7.4 compatible shard ordering counters: add helper for retrieving shards in 1.7.4 order tests/counter: add tests for 1.7.4 counter shard order counters: add counter id comparator compatible with Scylla 1.7.4 tests/counter: verify order of counter shards tests/counter: add test for sorting and deduplicating shards counters: add function for sorting and deduplicating counter cells counters: add counter_id::operator> (cherry picked from commit31706ba989)