(cqlsh) fix cqlsh_copy_tests when vnodes are disabled patch by Stefania Alborghetti; reviewed by Paulo Motta for CASSANDRA-10997
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/c42716f2 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/c42716f2 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/c42716f2 Branch: refs/heads/cassandra-3.3 Commit: c42716f2a91ff4e0e8b1ed50eb01edb46978a562 Parents: 26dc07b Author: Stefania Alborghetti <stefania.alborghe...@datastax.com> Authored: Tue Jan 12 12:12:34 2016 +0000 Committer: Aleksey Yeschenko <alek...@apache.org> Committed: Thu Jan 14 17:09:40 2016 +0000 ---------------------------------------------------------------------- CHANGES.txt | 1 + pylib/cqlshlib/copyutil.py | 47 ++++++++++++++++++++++------------------- 2 files changed, 26 insertions(+), 22 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/c42716f2/CHANGES.txt ---------------------------------------------------------------------- diff --git a/CHANGES.txt b/CHANGES.txt index 9c73adf..74fd45b 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 2.1.13 + * (cqlsh) fix cqlsh_copy_tests when vnodes are disabled (CASSANDRA-10997) * (cqlsh) fix formatting bytearray values (CASSANDRA-10839) * (cqlsh) Add request timeout option to cqlsh (CASSANDRA-10686) * Avoid AssertionError while submitting hint with LWT (CASSANDRA-10477) http://git-wip-us.apache.org/repos/asf/cassandra/blob/c42716f2/pylib/cqlshlib/copyutil.py ---------------------------------------------------------------------- diff --git a/pylib/cqlshlib/copyutil.py b/pylib/cqlshlib/copyutil.py index 381701e..b015a77 100644 --- a/pylib/cqlshlib/copyutil.py +++ b/pylib/cqlshlib/copyutil.py @@ -492,30 +492,33 @@ class ExportTask(CopyTask): ring = shell.get_ring(self.ks).items() ring.sort() - # If the ring is empty we get the entire ring from the host we are currently connected to if not ring: + # If the ring is empty we get the entire ring from the host we are currently connected to ranges[(begin_token, end_token)] = make_range_data() - return ranges - - first_range_data = None - previous = None - for token, replicas in ring: - if previous is None and token.value == min_token: - continue # avoids looping entire ring - - if previous is None: # we use it at the end when wrapping around - first_range_data = make_range_data(replicas) - - current_range = make_range(previous, token.value) - if not current_range: - continue - - ranges[current_range] = make_range_data(replicas) - previous = token.value - - # For the last ring interval we query the same replicas that hold the first token in the ring - if previous is not None and (not end_token or previous < end_token): - ranges[(previous, end_token)] = first_range_data + elif len(ring) == 1: + # If there is only one token we get the entire ring from the replicas for that token + ranges[(begin_token, end_token)] = make_range_data(ring[0][1]) + else: + # else we loop on the ring + first_range_data = None + previous = None + for token, replicas in ring: + if not first_range_data: + first_range_data = make_range_data(replicas) # we use it at the end when wrapping around + + if token.value == min_token: + continue # avoids looping entire ring + + current_range = make_range(previous, token.value) + if not current_range: + continue + + ranges[current_range] = make_range_data(replicas) + previous = token.value + + # For the last ring interval we query the same replicas that hold the first token in the ring + if previous is not None and (not end_token or previous < end_token): + ranges[(previous, end_token)] = first_range_data if not ranges: shell.printerr('Found no ranges to query, check begin and end tokens: %s - %s' % (begin_token, end_token))