8261242: [Linux] OSContainer::is_containerized() returns true when run outside a container

Reviewed-by: stuefe, iklam
This commit is contained in:
Severin Gehwolf 2024-07-01 08:47:29 +00:00
parent 71e3798bf6
commit 0a6ffa5795
19 changed files with 290 additions and 64 deletions

View file

@ -35,6 +35,11 @@ public class CgroupMetrics implements Metrics {
this.subsystem = Objects.requireNonNull(subsystem);
}
@Override
public boolean isContainerized() {
return isContainerized0();
}
@Override
public String getProvider() {
return subsystem.getProvider();
@ -194,6 +199,7 @@ public class CgroupMetrics implements Metrics {
}
private static native boolean isUseContainerSupport();
private static native boolean isContainerized0();
private static native long getTotalMemorySize0();
private static native long getTotalSwapSize0();

View file

@ -31,6 +31,11 @@ package jdk.internal.platform;
*/
public interface CgroupSubsystem extends Metrics {
default boolean isContainerized() {
return false; // This default impl is never used
}
/**
* Returned for metrics of type long if the underlying implementation
* has determined that no limit is being imposed.

View file

@ -36,6 +36,12 @@ Java_jdk_internal_platform_CgroupMetrics_isUseContainerSupport(JNIEnv *env, jcla
return JVM_IsUseContainerSupport();
}
JNIEXPORT jboolean JNICALL
Java_jdk_internal_platform_CgroupMetrics_isContainerized0(JNIEnv *env, jclass ignored)
{
return JVM_IsContainerized();
}
JNIEXPORT jlong JNICALL
Java_jdk_internal_platform_CgroupMetrics_getTotalMemorySize0
(JNIEnv *env, jclass ignored)