RFR: 8272124: Cgroup v1 initialization causes NullPointerException when path contains colon [v2]

Severin Gehwolf sgehwolf at openjdk.java.net
Tue Aug 17 17:51:25 UTC 2021

On Tue, 17 Aug 2021 17:39:49 GMT, Harold Seigel <hseigel at openjdk.org> wrote:

>> Please review this small fix for JDK-8272124.  The fix puts a limit of 3 when splitting self cgroup lines by ':' so that Cgroup paths won't get truncated if they contain embedded ':'s.  For example, an entry of "11:memory:/user.sli:ce" in a /proc/self/cgroup file will now result in a Cgroup path of "/user.sli:ce" instead of "/user.sli".
>> The fix was tested with Mach5 tiers 1 and 2, and Mach5 tiers 3-5 on Linux x64 and Linux aarch64.
>> Thanks, Harold
> Harold Seigel has updated the pull request incrementally with one additional commit since the last revision:
>   add test case, comments, and other small changes

test/jdk/jdk/internal/platform/cgroup/TestCgroupSubsystemFactory.java line 375:

> 373:         CgroupInfo memoryInfo = res.getInfos().get("memory");
> 374:         assertEquals(memoryInfo.getCgroupPath(), "/system.slice/containerd.service/kubepods-burstable-podf65e797d_d5f9_4604_9773_94f4bb9946a0.slice:cri-containerd:86ac6260f9f8a9c1276748250f330ae9c2fcefe5ae809364ad1e45f3edf7e08a");
> 375:         assertEquals(memoryInfo.getMountRoot(), memoryInfo.getMountRoot());

What I meant here is to also change the mountinfo entry for `memory` and then use

assertEquals(memoryInfo.getMountRoot(), memoryInfo.getCgroupPath());

as that's really what was happening in the wild. mount root - containing colons - would correctly parse, but the cgroup path - containing colons - would not and the assertion would fail (without the change in CgroupSubsystemFactory). Thanks!


PR: https://git.openjdk.java.net/jdk/pull/5127

More information about the hotspot-runtime-dev mailing list