This is an enhancement which solves two issues:

1. Multiple reads of relevant cgroup interface files. Now interface files are 
only read once per file (just like Hotspot).
2. Proxies creation of the impl specific subsystem via `determineType()` as 
before, but now reads all relevant interface files: `/proc/cgroups`, 
`/proc/self/mountinfo` and `/proc/self/cgroup`. Once read it passes the parsed 
information to the impl specific subsystem classes for instantiation. This 
allows for more flexibility of testing as interface files can be mocked and, 
thus, more cases can be tested that way without having access to these specific 
systems. For example, proper regression tests for JDK-8217766 and JDK-8253435 
have been added now with this in place.

* [x] Tested on Linux x86_64 on cgroups v1 and cgroups v2. Container tests pass.

-------------

Commit messages:
 - 8254001: [Metrics] Enhance parsing of cgroup interface files for version 
detection

Changes: https://git.openjdk.java.net/jdk/pull/1393/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=1393&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8254001
  Stats: 537 lines in 5 files changed: 268 ins; 193 del; 76 mod
  Patch: https://git.openjdk.java.net/jdk/pull/1393.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/1393/head:pull/1393

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

Reply via email to