apache/cassandra · warning

Non-Oracle JVM detected. Some features, such as immediate u

Error message

Non-Oracle JVM detected.  Some features, such as immediate unmap of compacted SSTables, may not work as intended

What it means

The checkJVMArchitecture startup check warns when the JAVA_VM_NAME system property contains neither 'HotSpot' nor 'OpenJDK', meaning Cassandra is running on a non-HotSpot-compatible JVM (e.g. IBM J9, OpenJ9, HotSpot-derived forks with different names). Certain features such as immediate unmapping of compacted SSTables via sun.misc/Cleaner APIs may not behave correctly. This is a logged warning; startup proceeds.

Source

Thrown at src/java/org/apache/cassandra/service/StartupChecks.java:604

        @Override
        public String name()
        {
            return "jvm_options";
        }

        @Override
        public void execute(StartupChecksConfiguration configuration)
        {
            if (configuration.isDisabled(name()))
                return;
            // log warnings for different kinds of sub-optimal JVMs.  tldr use 64-bit Oracle >= 1.6u32
            if (!DatabaseDescriptor.hasLargeAddressSpace())
                logger.warn("32bit JVM detected.  It is recommended to run Cassandra on a 64bit JVM for better performance.");

            String javaVmName = JAVA_VM_NAME.getString();
            if (!(javaVmName.contains("HotSpot") || javaVmName.contains("OpenJDK")))
            {
                logger.warn("Non-Oracle JVM detected.  Some features, such as immediate unmap of compacted SSTables, may not work as intended");
            }
            else
            {
                checkOutOfMemoryHandling();
            }
        }

        /**
         * Checks that the JVM is configured to handle OutOfMemoryError
         */
        private void checkOutOfMemoryHandling()
        {
            if (JavaUtils.supportExitOnOutOfMemory(JAVA_VERSION.getString()))
            {
                if (!jvmOptionsContainsOneOf("-XX:OnOutOfMemoryError=", "-XX:+ExitOnOutOfMemoryError", "-XX:+CrashOnOutOfMemoryError"))
                    logger.warn("The JVM is not configured to stop on OutOfMemoryError which can cause data corruption."
                                + " Use one of the following JVM options to configure the behavior on OutOfMemoryError: "
                                + " -XX:+ExitOnOutOfMemoryError, -XX:+CrashOnOutOfMemoryError, or -XX:OnOutOfMemoryError=\"<cmd args>;<cmd args>\"");

View on GitHub (pinned to 88fd0f6a0e)

Solutions

  1. Switch to a HotSpot or OpenJDK-based JVM (e.g. Temurin, Corretto, Oracle JDK).
  2. Check java.vm.name (`java -XshowSettings:properties -version`) and if it is actually HotSpot/OpenJDK under an odd vendor name, ignore the warning.
  3. Pin the supported JDK version recommended by your Cassandra version in cassandra-env.sh.
  4. Test compaction and memory-mapped behavior if you must stay on the alternate JVM.

Example fix

// before
cassandra-env.sh: JAVA_HOME=/usr/lib/jvm/ibm-java (OpenJ9)
// after
cassandra-env.sh: JAVA_HOME=/usr/lib/jvm/temurin-11-jdk-amd64
Defensive patterns

Strategy: validation

Validate before calling

String vmName = System.getProperty("java.vm.name", "");
boolean hotSpotLike = vmName.contains("HotSpot") || vmName.contains("OpenJDK");
if (!hotSpotLike) System.out.println("Unsupported JVM: " + vmName + "; use HotSpot/OpenJDK.");

Prevention

When it happens

Trigger: java.vm.name does not contain 'HotSpot' or 'OpenJDK' at startup; note that when this branch is taken, checkOutOfMemoryHandling() is skipped (only HotSpot/OpenJDK JVMs get the OOM-handling check).

Common situations: Running Cassandra on Eclipse OpenJ9/IBM J9 JVMs, Azul Zing, GraalVM with an unusual vm.name string, or vendor builds that rename java.vm.name.

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 apache/cassandra@88fd0f6a0e (2026-09-10). Data as JSON: /api/errors/7d09f6dd37b31587. Report an issue: GitHub.