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

  1. Verify the OS is one the provider supports; on Windows this warning is expected and file-descriptor metrics are unavailable
  2. 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)
  3. Run the agent on a supported Linux distribution to obtain file-descriptor metrics
  4. 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

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


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)