Skip to content

Commit 90c914a

Browse files
committed
manifest: apply a few small hygiene improvements to L0 sublevels
Apply a few small code hygiene improvements, like using min and max builtins and the slices.Clone function.
1 parent 4703883 commit 90c914a

File tree

1 file changed

+22
-53
lines changed

1 file changed

+22
-53
lines changed

internal/manifest/l0_sublevels.go

Lines changed: 22 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -379,7 +379,7 @@ func mergeIntervals(
379379
// the file bytes are interpolated over has changed.
380380
estimatedBytes: 0,
381381
// Copy the below attributes from prevInterval.
382-
files: append([]*TableMetadata(nil), prevInterval.files...),
382+
files: slices.Clone(prevInterval.files),
383383
isBaseCompacting: prevInterval.isBaseCompacting,
384384
intervalRangeIsBaseCompacting: prevInterval.intervalRangeIsBaseCompacting,
385385
compactingFileCount: prevInterval.compactingFileCount,
@@ -463,11 +463,9 @@ func (s *l0Sublevels) addL0Files(
463463
// Shallow copies of slices that we just append to, are okay.
464464
newVal.levelFiles = make([][]*TableMetadata, len(s.levelFiles))
465465
for i := range s.levelFiles {
466-
newVal.levelFiles[i] = make([]*TableMetadata, len(s.levelFiles[i]))
467-
copy(newVal.levelFiles[i], s.levelFiles[i])
466+
newVal.levelFiles[i] = slices.Clone(s.levelFiles[i])
468467
}
469-
newVal.Levels = make([]LevelSlice, len(s.Levels))
470-
copy(newVal.Levels, s.Levels)
468+
newVal.Levels = slices.Clone(s.Levels)
471469

472470
fileKeys := make([]intervalKeyTemp, 0, 2*len(files))
473471
for _, f := range files {
@@ -603,7 +601,7 @@ func (s *l0Sublevels) addL0Files(
603601
}
604602

605603
// Sort and deduplicate updatedSublevels.
606-
sort.Ints(updatedSublevels)
604+
slices.Sort(updatedSublevels)
607605
{
608606
j := 0
609607
for i := 1; i < len(updatedSublevels); i++ {
@@ -763,9 +761,8 @@ func (s *l0Sublevels) InitCompactingFileInfo(inProgress []L0Compaction) {
763761
return intervalKeyCompare(s.cmp, a.startKey, b)
764762
})
765763
for i := start; i < end && i < len(s.orderedIntervals); i++ {
766-
interval := &s.orderedIntervals[i]
767764
if !c.IsIntraL0 {
768-
interval.isBaseCompacting = true
765+
s.orderedIntervals[i].isBaseCompacting = true
769766
}
770767
}
771768
}
@@ -908,12 +905,8 @@ func (s *l0Sublevels) describe(verbose bool) string {
908905
// sublevels.
909906
func (s *l0Sublevels) ReadAmplification() int {
910907
amp := 0
911-
for i := range s.orderedIntervals {
912-
interval := &s.orderedIntervals[i]
913-
fileCount := len(interval.files)
914-
if amp < fileCount {
915-
amp = fileCount
916-
}
908+
for _, interval := range s.orderedIntervals {
909+
amp = max(amp, len(interval.files))
917910
}
918911
return amp
919912
}
@@ -995,12 +988,8 @@ func (s *l0Sublevels) FlushSplitKeys() [][]byte {
995988
// L0 -> Lbase compaction.
996989
func (s *l0Sublevels) MaxDepthAfterOngoingCompactions() int {
997990
depth := 0
998-
for i := range s.orderedIntervals {
999-
interval := &s.orderedIntervals[i]
1000-
intervalDepth := len(interval.files) - interval.compactingFileCount
1001-
if depth < intervalDepth {
1002-
depth = intervalDepth
1003-
}
991+
for _, interval := range s.orderedIntervals {
992+
depth = max(depth, len(interval.files)-interval.compactingFileCount)
1004993
}
1005994
return depth
1006995
}
@@ -1038,21 +1027,13 @@ func (s *l0Sublevels) checkCompaction(c *L0CompactionFiles) error {
10381027
}
10391028
}
10401029
for _, f := range c.Files {
1041-
if fileIntervalsByLevel[f.SubLevel].min > f.minIntervalIndex {
1042-
fileIntervalsByLevel[f.SubLevel].min = f.minIntervalIndex
1043-
}
1044-
if fileIntervalsByLevel[f.SubLevel].max < f.maxIntervalIndex {
1045-
fileIntervalsByLevel[f.SubLevel].max = f.maxIntervalIndex
1046-
}
1030+
fileIntervalsByLevel[f.SubLevel].min = min(fileIntervalsByLevel[f.SubLevel].min, f.minIntervalIndex)
1031+
fileIntervalsByLevel[f.SubLevel].max = max(fileIntervalsByLevel[f.SubLevel].max, f.maxIntervalIndex)
10471032
includedFiles.markBit(f.L0Index)
10481033
if c.isIntraL0 {
1049-
if topLevel > f.SubLevel {
1050-
topLevel = f.SubLevel
1051-
}
1034+
topLevel = min(topLevel, f.SubLevel)
10521035
} else {
1053-
if topLevel < f.SubLevel {
1054-
topLevel = f.SubLevel
1055-
}
1036+
topLevel = max(topLevel, f.SubLevel)
10561037
}
10571038
}
10581039
min := fileIntervalsByLevel[topLevel].min
@@ -1109,20 +1090,15 @@ func (s *l0Sublevels) checkCompaction(c *L0CompactionFiles) error {
11091090
// and IsIntraL0Compacting fields are already set on all [TableMetadata]s passed
11101091
// in.
11111092
func (s *l0Sublevels) UpdateStateForStartedCompaction(inputs []LevelSlice, isBase bool) error {
1112-
minIntervalIndex := -1
1093+
minIntervalIndex := math.MaxInt
11131094
maxIntervalIndex := 0
11141095
for i := range inputs {
11151096
for f := range inputs[i].All() {
11161097
for i := f.minIntervalIndex; i <= f.maxIntervalIndex; i++ {
1117-
interval := &s.orderedIntervals[i]
1118-
interval.compactingFileCount++
1119-
}
1120-
if f.minIntervalIndex < minIntervalIndex || minIntervalIndex == -1 {
1121-
minIntervalIndex = f.minIntervalIndex
1122-
}
1123-
if f.maxIntervalIndex > maxIntervalIndex {
1124-
maxIntervalIndex = f.maxIntervalIndex
1098+
s.orderedIntervals[i].compactingFileCount++
11251099
}
1100+
minIntervalIndex = min(minIntervalIndex, f.minIntervalIndex)
1101+
maxIntervalIndex = max(maxIntervalIndex, f.maxIntervalIndex)
11261102
}
11271103
}
11281104
if isBase {
@@ -1202,12 +1178,8 @@ func (l *L0CompactionFiles) addFile(f *TableMetadata) {
12021178
l.Files = append(l.Files, f)
12031179
l.filesAdded = append(l.filesAdded, f)
12041180
l.fileBytes += f.Size
1205-
if f.minIntervalIndex < l.minIntervalIndex {
1206-
l.minIntervalIndex = f.minIntervalIndex
1207-
}
1208-
if f.maxIntervalIndex > l.maxIntervalIndex {
1209-
l.maxIntervalIndex = f.maxIntervalIndex
1210-
}
1181+
l.minIntervalIndex = min(l.minIntervalIndex, f.minIntervalIndex)
1182+
l.maxIntervalIndex = max(l.maxIntervalIndex, f.maxIntervalIndex)
12111183
}
12121184

12131185
// Helper to order intervals being considered for compaction.
@@ -1918,12 +1890,9 @@ func (s *l0Sublevels) extendCandidateToRectangle(
19181890
candidate.preExtensionMaxInterval = candidate.maxIntervalIndex
19191891
// Extend {min,max}IntervalIndex to include all of the candidate's current
19201892
// bounds.
1921-
if minIntervalIndex > candidate.minIntervalIndex {
1922-
minIntervalIndex = candidate.minIntervalIndex
1923-
}
1924-
if maxIntervalIndex < candidate.maxIntervalIndex {
1925-
maxIntervalIndex = candidate.maxIntervalIndex
1926-
}
1893+
minIntervalIndex = min(minIntervalIndex, candidate.minIntervalIndex)
1894+
maxIntervalIndex = max(maxIntervalIndex, candidate.maxIntervalIndex)
1895+
19271896
var startLevel, increment, endLevel int
19281897
if isBase {
19291898
startLevel = 0

0 commit comments

Comments
 (0)