Skip to content

Commit 3ba6b8d

Browse files
mergify[bot]wyb
andauthored
[BugFix] Fix get max compaction score NullPointerException bug (backport #63268) (#63276)
Signed-off-by: wyb <wybb86@gmail.com> Co-authored-by: wyb <wybb86@gmail.com>
1 parent b5cda3b commit 3ba6b8d

2 files changed

Lines changed: 10 additions & 2 deletions

File tree

fe/fe-core/src/main/java/com/starrocks/lake/compaction/CompactionMgr.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -206,8 +206,8 @@ public PartitionStatistics getStatistics(PartitionIdentifier identifier) {
206206
}
207207

208208
public double getMaxCompactionScore() {
209-
return partitionStatisticsHashMap.values().stream().mapToDouble(stat -> stat.getCompactionScore().getMax())
210-
.max().orElse(0);
209+
return partitionStatisticsHashMap.values().stream().filter(stat -> stat.getCompactionScore() != null)
210+
.mapToDouble(stat -> stat.getCompactionScore().getMax()).max().orElse(0);
211211
}
212212

213213
void enableCompactionAfter(PartitionIdentifier partition, long delayMs) {

fe/fe-core/src/test/java/com/starrocks/lake/compaction/CompactionMgrTest.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,17 +166,25 @@ public void testGetMaxCompactionScore() {
166166
PartitionIdentifier partition2 = new PartitionIdentifier(1, 2, 4);
167167
Assertions.assertEquals(0, compactionMgr.getMaxCompactionScore(), delta);
168168

169+
// load and compact partition 1
169170
compactionMgr.handleLoadingFinished(partition1, 2, System.currentTimeMillis(),
170171
Quantiles.compute(Lists.newArrayList(1d)));
171172
Assertions.assertEquals(1, compactionMgr.getMaxCompactionScore(), delta);
172173
compactionMgr.handleCompactionFinished(partition1, 3, System.currentTimeMillis(),
173174
Quantiles.compute(Lists.newArrayList(2d)), 1234, false);
174175
Assertions.assertEquals(2, compactionMgr.getMaxCompactionScore(), delta);
175176

177+
// load partition 2
176178
compactionMgr.handleLoadingFinished(partition2, 2, System.currentTimeMillis(),
177179
Quantiles.compute(Lists.newArrayList(3d)));
178180
Assertions.assertEquals(3, compactionMgr.getMaxCompactionScore(), delta);
179181

182+
// set partition 2 compaction score to null
183+
PartitionStatistics statistics2 = compactionMgr.getStatistics(partition2);
184+
statistics2.setCompactionScore(null);
185+
Assertions.assertEquals(2, compactionMgr.getMaxCompactionScore(), delta);
186+
187+
// remove partition 2
180188
compactionMgr.removePartition(partition2);
181189
Assertions.assertEquals(2, compactionMgr.getMaxCompactionScore(), delta);
182190
}

0 commit comments

Comments
 (0)