pinpoint-apm/pinpoint · warning
Unsupported operating system
Error message
Unsupported operating system {}/{}/{} What it means
FileDescriptorMetricProvider.getMetricClassName logs this warning when the detected operating system is not in the provider's supported-OS list, before it even attempts to load a metric class. It returns the UNSUPPORTED_METRIC class name, so file-descriptor metrics are not collected on that platform. The message includes the OS type, JVM version, and JVM type for diagnosis.
Solutions
- Verify the OS is one the provider supports; on Windows this warning is expected and file-descriptor metrics are unavailable
- If on a supported OS that is still flagged, check the OS-detection logic (os.name system property may be non-standard in your container)
- Run the agent on a supported Linux distribution to obtain file-descriptor metrics
- Accept UNSUPPORTED_METRIC if the platform genuinely cannot expose fd counts
Example fix
// before (unusual container) ENV spark.executor.opts -Dos.name=AlpineEmbedded // after # do not override os.name; let detection report the real supported OS ENV spark.executor.opts ""
Defensive patterns
Strategy: validation
Validate before calling
String os = System.getProperty("os.name"); if (os.toLowerCase().startsWith("windows")) { /* fd metrics unsupported — don't expect them */ } Type guard
function isFdMetricSupported(osType) { return osType === 'LINUX' || osType === 'UNIX'; } Prevention
- Run the agent on a supported Linux/Unix OS if file-descriptor metrics are required
- Do not override the os.name system property in launch scripts or containers
- Check the Pinpoint docs/platform matrix before deploying to exotic OSes
- Expect and ignore this warning on Windows — it is by design
When it happens
Trigger: Agent started on an OS not covered by isSupportedOS (non-Linux/Unix variants like Windows or exotic platforms), regardless of JVM version.
Common situations: Running the Pinpoint agent on Windows developers machines; container images on unusual base OSes; BSD or other non-supported Unix flavors.
Understand the failure class
Background: "unsupported platform" / "not supported on this platform" errors: what they mean and how to fix them — this error's family across 47 libraries.
Related errors
- Error creating FileDescriptorMetric
- Unknown FileDescriptorMetric
- BufferMetric initialize fail
- Error creating CpuLoadMetric
- Failed to create metricId. metric
AI-assisted analysis of pinpoint-apm/pinpoint@744c3d3075 (2026-09-07).
Data as JSON: /api/errors/7ab9212f57872b15.
Report an issue: GitHub.
Appendix: source
Thrown at agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/provider/stat/filedescriptor/FileDescriptorMetricProvider.java:77
@Override
public FileDescriptorMetric get() {
final JvmVersion jvmVersion = JvmUtils.getVersion();
final JvmType jvmType = getJvmType();
final OsType osType = getOsType();
final String classToLoad = getMetricClassName(osType, jvmVersion, jvmType);
FileDescriptorMetric fileDescriptorMetric = createFileDescriptorMetric(classToLoad);
logger.info("loaded : {}", fileDescriptorMetric);
return fileDescriptorMetric;
}
@VisibleForTesting
String getMetricClassName(OsType osType, JvmVersion jvmVersion, JvmType jvmType) {
if (!isSupportedOS(osType)) {
logger.warn("Unsupported operating system {}/{}/{}", osType, jvmVersion, jvmType);
return UNSUPPORTED_METRIC;
}
if (isOracleJdk(jvmType)) {
if (jvmVersion.onOrAfter(JvmVersion.JAVA_5)) {
return ORACLE_FILE_DESCRIPTOR_METRIC;
}
}
if (jvmType == JvmType.IBM) {
if (jvmVersion.onOrAfter(JvmVersion.JAVA_8)) {
return IBM_FILE_DESCRIPTOR_METRIC;
}
}
return UNSUPPORTED_METRIC;
}
private boolean isOracleJdk(JvmType jvmType) {View on GitHub (pinned to 744c3d3075)