/** * We avoid calculating for wrap around ranges, instead we use the actual max token, and then, when translating * to PartitionPositions, we include tokens from .minKeyBound to .maxKeyBound to make sure we include all tokens. */ private Token token(Token t) { return t.equals(partitioner.getMinimumToken()) ? partitioner.getMaximumToken() : t; }
/** * We avoid calculating for wrap around ranges, instead we use the actual max token, and then, when translating * to PartitionPositions, we include tokens from .minKeyBound to .maxKeyBound to make sure we include all tokens. */ private Token token(Token t) { return t.equals(partitioner.getMinimumToken()) ? partitioner.getMaximumToken() : t; }
/** * We avoid calculating for wrap around ranges, instead we use the actual max token, and then, when translating * to PartitionPositions, we include tokens from .minKeyBound to .maxKeyBound to make sure we include all tokens. */ private Token token(Token t) { return t.equals(partitioner.getMinimumToken()) ? partitioner.getMaximumToken() : t; }
/** * We avoid calculating for wrap around ranges, instead we use the actual max token, and then, when translating * to PartitionPositions, we include tokens from .minKeyBound to .maxKeyBound to make sure we include all tokens. */ private Token token(Token t) { return t.equals(partitioner.getMinimumToken()) ? partitioner.getMaximumToken() : t; }
public Token maxValue() { return getPartitioner().getMaximumToken(); }
boundaries.add(partitioner.getMaximumToken()); return boundaries;
boundaries.add(partitioner.getMaximumToken()); return boundaries;
public List<Token> splitOwnedRanges(int parts, List<Range<Token>> localRanges, boolean dontSplitRanges) return Collections.singletonList(partitioner.getMaximumToken()); return Collections.singletonList(partitioner.getMaximumToken()); boundaries.set(boundaries.size() - 1, partitioner.getMaximumToken());
public List<Token> splitOwnedRanges(int parts, List<Range<Token>> localRanges, boolean dontSplitRanges) return Collections.singletonList(partitioner.getMaximumToken()); return Collections.singletonList(partitioner.getMaximumToken()); boundaries.set(boundaries.size() - 1, partitioner.getMaximumToken());
boundaries.add(partitioner.getMaximumToken()); return boundaries;
boundaries.add(partitioner.getMaximumToken()); return boundaries;
public List<Token> splitOwnedRanges(int parts, List<Range<Token>> localRanges, boolean dontSplitRanges) return Collections.singletonList(partitioner.getMaximumToken()); return Collections.singletonList(partitioner.getMaximumToken()); boundaries.set(boundaries.size() - 1, partitioner.getMaximumToken());
public List<Token> splitOwnedRanges(int parts, List<Range<Token>> localRanges, boolean dontSplitRanges) return Collections.singletonList(partitioner.getMaximumToken()); return Collections.singletonList(partitioner.getMaximumToken()); boundaries.set(boundaries.size() - 1, partitioner.getMaximumToken());
/** * Returns a list of disk boundaries, the result will differ depending on whether vnodes are enabled or not. * * What is returned are upper bounds for the disks, meaning everything from partitioner.minToken up to * getDiskBoundaries(..).get(0) should be on the first disk, everything between 0 to 1 should be on the second disk * etc. * * The final entry in the returned list will always be the partitioner maximum tokens upper key bound */ private static List<PartitionPosition> getDiskBoundaries(List<Range<Token>> sortedLocalRanges, IPartitioner partitioner, Directories.DataDirectory[] dataDirectories) { assert partitioner.splitter().isPresent(); Splitter splitter = partitioner.splitter().get(); boolean dontSplitRanges = DatabaseDescriptor.getNumTokens() > 1; List<Token> boundaries = splitter.splitOwnedRanges(dataDirectories.length, sortedLocalRanges, dontSplitRanges); // If we can't split by ranges, split evenly to ensure utilisation of all disks if (dontSplitRanges && boundaries.size() < dataDirectories.length) boundaries = splitter.splitOwnedRanges(dataDirectories.length, sortedLocalRanges, false); List<PartitionPosition> diskBoundaries = new ArrayList<>(); for (int i = 0; i < boundaries.size() - 1; i++) diskBoundaries.add(boundaries.get(i).maxKeyBound()); diskBoundaries.add(partitioner.getMaximumToken().maxKeyBound()); return diskBoundaries; } }
/** * Returns a list of disk boundaries, the result will differ depending on whether vnodes are enabled or not. * * What is returned are upper bounds for the disks, meaning everything from partitioner.minToken up to * getDiskBoundaries(..).get(0) should be on the first disk, everything between 0 to 1 should be on the second disk * etc. * * The final entry in the returned list will always be the partitioner maximum tokens upper key bound */ private static List<PartitionPosition> getDiskBoundaries(List<Range<Token>> sortedLocalRanges, IPartitioner partitioner, Directories.DataDirectory[] dataDirectories) { assert partitioner.splitter().isPresent(); Splitter splitter = partitioner.splitter().get(); boolean dontSplitRanges = DatabaseDescriptor.getNumTokens() > 1; List<Token> boundaries = splitter.splitOwnedRanges(dataDirectories.length, sortedLocalRanges, dontSplitRanges); // If we can't split by ranges, split evenly to ensure utilisation of all disks if (dontSplitRanges && boundaries.size() < dataDirectories.length) boundaries = splitter.splitOwnedRanges(dataDirectories.length, sortedLocalRanges, false); List<PartitionPosition> diskBoundaries = new ArrayList<>(); for (int i = 0; i < boundaries.size() - 1; i++) diskBoundaries.add(boundaries.get(i).maxKeyBound()); diskBoundaries.add(partitioner.getMaximumToken().maxKeyBound()); return diskBoundaries; } }
/** * Returns a list of disk boundaries, the result will differ depending on whether vnodes are enabled or not. * * What is returned are upper bounds for the disks, meaning everything from partitioner.minToken up to * getDiskBoundaries(..).get(0) should be on the first disk, everything between 0 to 1 should be on the second disk * etc. * * The final entry in the returned list will always be the partitioner maximum tokens upper key bound */ private static List<PartitionPosition> getDiskBoundaries(List<Range<Token>> sortedLocalRanges, IPartitioner partitioner, Directories.DataDirectory[] dataDirectories) { assert partitioner.splitter().isPresent(); Splitter splitter = partitioner.splitter().get(); boolean dontSplitRanges = DatabaseDescriptor.getNumTokens() > 1; List<Token> boundaries = splitter.splitOwnedRanges(dataDirectories.length, sortedLocalRanges, dontSplitRanges); // If we can't split by ranges, split evenly to ensure utilisation of all disks if (dontSplitRanges && boundaries.size() < dataDirectories.length) boundaries = splitter.splitOwnedRanges(dataDirectories.length, sortedLocalRanges, false); List<PartitionPosition> diskBoundaries = new ArrayList<>(); for (int i = 0; i < boundaries.size() - 1; i++) diskBoundaries.add(boundaries.get(i).maxKeyBound()); diskBoundaries.add(partitioner.getMaximumToken().maxKeyBound()); return diskBoundaries; } }