8287073: NPE from CgroupV2Subsystem.getInstance()

Reviewed-by: vkempik, iklam
This commit is contained in:
Maxim Kartashev 2022-05-30 06:18:47 +00:00 committed by Ioi Lam
parent 5848a60c01
commit 744b822ab1

View file

@ -36,6 +36,7 @@ import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Optional; import java.util.Optional;
import java.util.Objects;
import java.util.function.Consumer; import java.util.function.Consumer;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
@ -108,9 +109,9 @@ public class CgroupSubsystemFactory {
Map<String, CgroupInfo> infos = result.getInfos(); Map<String, CgroupInfo> infos = result.getInfos();
if (result.isCgroupV2()) { if (result.isCgroupV2()) {
// For unified it doesn't matter which controller we pick. // For unified it doesn't matter which controller we pick.
CgroupInfo anyController = infos.get(MEMORY_CTRL); CgroupInfo anyController = infos.values().iterator().next();
CgroupSubsystem subsystem = CgroupV2Subsystem.getInstance(anyController); CgroupSubsystem subsystem = CgroupV2Subsystem.getInstance(Objects.requireNonNull(anyController));
return subsystem != null ? new CgroupMetrics(subsystem) : null; return new CgroupMetrics(subsystem);
} else { } else {
CgroupV1Subsystem subsystem = CgroupV1Subsystem.getInstance(infos); CgroupV1Subsystem subsystem = CgroupV1Subsystem.getInstance(infos);
return subsystem != null ? new CgroupV1MetricsImpl(subsystem) : null; return subsystem != null ? new CgroupV1MetricsImpl(subsystem) : null;