[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>
This commit is contained in:
mergify[bot] 2025-09-18 14:20:42 +00:00 committed by GitHub
parent b5cda3b6c4
commit 3ba6b8deef
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 10 additions and 2 deletions

View File

@ -206,8 +206,8 @@ public class CompactionMgr implements MemoryTrackable {
}
public double getMaxCompactionScore() {
return partitionStatisticsHashMap.values().stream().mapToDouble(stat -> stat.getCompactionScore().getMax())
.max().orElse(0);
return partitionStatisticsHashMap.values().stream().filter(stat -> stat.getCompactionScore() != null)
.mapToDouble(stat -> stat.getCompactionScore().getMax()).max().orElse(0);
}
void enableCompactionAfter(PartitionIdentifier partition, long delayMs) {

View File

@ -166,6 +166,7 @@ public class CompactionMgrTest {
PartitionIdentifier partition2 = new PartitionIdentifier(1, 2, 4);
Assertions.assertEquals(0, compactionMgr.getMaxCompactionScore(), delta);
// load and compact partition 1
compactionMgr.handleLoadingFinished(partition1, 2, System.currentTimeMillis(),
Quantiles.compute(Lists.newArrayList(1d)));
Assertions.assertEquals(1, compactionMgr.getMaxCompactionScore(), delta);
@ -173,10 +174,17 @@ public class CompactionMgrTest {
Quantiles.compute(Lists.newArrayList(2d)), 1234, false);
Assertions.assertEquals(2, compactionMgr.getMaxCompactionScore(), delta);
// load partition 2
compactionMgr.handleLoadingFinished(partition2, 2, System.currentTimeMillis(),
Quantiles.compute(Lists.newArrayList(3d)));
Assertions.assertEquals(3, compactionMgr.getMaxCompactionScore(), delta);
// set partition 2 compaction score to null
PartitionStatistics statistics2 = compactionMgr.getStatistics(partition2);
statistics2.setCompactionScore(null);
Assertions.assertEquals(2, compactionMgr.getMaxCompactionScore(), delta);
// remove partition 2
compactionMgr.removePartition(partition2);
Assertions.assertEquals(2, compactionMgr.getMaxCompactionScore(), delta);
}