mirror of https://github.com/apache/cassandra
Merge branch 'cassandra-6.0' into trunk
This commit is contained in:
commit
017276263a
|
|
@ -46,6 +46,7 @@ Merged from 5.0:
|
|||
* Use estimated compressed size for tables to check if there is enough free space for a compaction (CASSANDRA-21245)
|
||||
* Fix failing select on system_views.settings for non-string keys (CASSANDRA-21348)
|
||||
Merged from 4.0:
|
||||
* Consider first token of SSTable when calculating SSTable intersection in LeveledScanner (CASSANDRA-21369)
|
||||
* Remove inFlightEcho entry on ECHO_REQ failure (CASSANDRA-21428)
|
||||
* Validate snapshot names (CASSANDRA-21389)
|
||||
|
||||
|
|
|
|||
|
|
@ -405,7 +405,7 @@ public class LeveledCompactionStrategy extends AbstractCompactionStrategy
|
|||
|
||||
// Lazily creates SSTableBoundedScanner for sstable that are assumed to be from the
|
||||
// same level (e.g. non overlapping) - see #4142
|
||||
private static class LeveledScanner extends AbstractIterator<UnfilteredRowIterator> implements ISSTableScanner
|
||||
protected static class LeveledScanner extends AbstractIterator<UnfilteredRowIterator> implements ISSTableScanner
|
||||
{
|
||||
private final TableMetadata metadata;
|
||||
private final Collection<Range<Token>> ranges;
|
||||
|
|
@ -465,8 +465,7 @@ public class LeveledCompactionStrategy extends AbstractCompactionStrategy
|
|||
{
|
||||
for (SSTableReader sstable : sstables)
|
||||
{
|
||||
Range<Token> sstableRange = new Range<>(sstable.getFirst().getToken(), sstable.getLast().getToken());
|
||||
if (range == null || sstableRange.intersects(range))
|
||||
if (range == null || range.intersects(sstable.getBounds()))
|
||||
filtered.add(sstable);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -76,6 +76,7 @@ import org.apache.cassandra.utils.Pair;
|
|||
import org.apache.cassandra.utils.TimeUUID;
|
||||
|
||||
import static java.util.Collections.singleton;
|
||||
import static org.apache.cassandra.schema.MockSchema.readerBounds;
|
||||
import static org.apache.cassandra.utils.TimeUUID.Generator.nextTimeUUID;
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
|
@ -1061,6 +1062,32 @@ public class LeveledCompactionStrategyTest
|
|||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testLevelScannerIntersection()
|
||||
{
|
||||
Collection<SSTableReader> sstable = Collections.singleton(MockSchema.sstableWithLevel(1, 10, 20, 1, cfs));
|
||||
|
||||
// SSTable range - [10, 20]
|
||||
// range - (1, 9]
|
||||
Range<Token> range = new Range<>(readerBounds(1).getToken(), readerBounds(9).getToken());
|
||||
assertEquals(0, LeveledCompactionStrategy.LeveledScanner.intersecting(sstable, Collections.singleton(range)).size());
|
||||
|
||||
// SSTable range - [10, 20]
|
||||
// range - (1, 10]
|
||||
range = new Range<>(readerBounds(1).getToken(), readerBounds(10).getToken());
|
||||
assertEquals(1, LeveledCompactionStrategy.LeveledScanner.intersecting(sstable, Collections.singleton(range)).size());
|
||||
|
||||
// SSTable range - [10, 20]
|
||||
// range - (1, 15]
|
||||
range = new Range<>(readerBounds(1).getToken(), readerBounds(15).getToken());
|
||||
assertEquals(1, LeveledCompactionStrategy.LeveledScanner.intersecting(sstable, Collections.singleton(range)).size());
|
||||
|
||||
// SSTable range - [10, 20]
|
||||
// range - (20, 25]
|
||||
range = new Range<>(readerBounds(20).getToken(), readerBounds(25).getToken());
|
||||
assertEquals(0, LeveledCompactionStrategy.LeveledScanner.intersecting(sstable, Collections.singleton(range)).size());
|
||||
}
|
||||
|
||||
private Pair<Set<SSTableReader>, Set<SSTableReader>> groupByLevel(Iterable<SSTableReader> sstables)
|
||||
{
|
||||
Set<SSTableReader> l1after = new HashSet<>();
|
||||
|
|
|
|||
Loading…
Reference in New Issue