Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -1512,6 +1512,34 @@ public int getIndex()
return index;
}

// The stats below are set up by getLevels and useful for diagnostics.
public int getFanout()
{
return fanout;
}

public int getThreshold()
{
return threshold;
}

public double getMinDensity()
{
return min;
}

public double getMaxDensity()
{
return max;
}

public double getAverageSSTableSize()
{
return avg;
}

// We don't expose max overlap as it's not valid until getCompactionAggregates gets called.

void add(CompactionSSTable sstable)
{
this.sstables.add(sstable);
Expand All @@ -1528,8 +1556,8 @@ void complete()
}

private List<CompactionAggregate.UnifiedAggregate> getOversizeShardsAggregates(Arena arena,
Controller controller,
ShardManager shardManager)
Controller controller,
ShardManager shardManager)
{
List<CompactionAggregate.UnifiedAggregate> aggregates = new ArrayList<>();
double shardThreshold = fanout * controller.getMaxSstablesPerShardFactor();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -237,6 +237,7 @@ SSTableReader mockSSTable(int level,
when(ret.isSuitableForCompaction()).thenReturn(true);
when(ret.getSSTableLevel()).thenReturn(level);
when(ret.onDiskLength()).thenReturn(bytesOnDisk);
when(ret.onDiskComponentsSize()).thenReturn(bytesOnDisk);
when(ret.uncompressedLength()).thenReturn(bytesOnDisk); // let's assume no compression
when(ret.hotness()).thenReturn(hotness);
when(ret.getMaxTimestamp()).thenReturn(timestamp);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -375,11 +375,24 @@ private void testGetMultipleBucketsOneArenaNonOverlappingAggregates(Map<Integer,
{
List<UnifiedCompactionStrategy.Level> levels = entry.getValue();
assertEquals(expectedLevels, levels.size());
double expectedMin = 0.0;

for (int i = 0; i < expectedLevels; i++)
{
UnifiedCompactionStrategy.Level level = levels.get(i);
assertEquals(i, level.getIndex());
assertEquals(expectedMin, level.getMinDensity(), 1.0);
expectedMin = level.getMaxDensity();
assertEquals(level.scalingParameter >= 0 ? level.scalingParameter + 2 : 2, level.getThreshold());
assertEquals(2 + Math.abs(level.scalingParameter), level.getFanout());
if (level.getSSTables().size() > 0)
assertEquals(level.getSSTables()
.stream()
.mapToLong(CompactionSSTable::onDiskLength)
.summaryStatistics()
.getAverage(),
level.getAverageSSTableSize(),
1.0);

Collection<CompactionAggregate.UnifiedAggregate> compactionAggregates =
level.getCompactionAggregates(entry.getKey(), controller, shardManager, dataSetSizeBytes);
Expand Down