apache/cassandra · warning

Cassandra system property flag

Error message

Cassandra system property flag %s is deprecated and you should use startup check configuration in cassandra.yaml

What it means

FileSystemOwnershipCheck warns that the FILE_SYSTEM_CHECK_OWNERSHIP_FILENAME system property (cassandra.fs_ownership_filename style flag) is deprecated; ownership-check file configuration should live in cassandra.yaml startup-check config instead. The property's value is still honored, so behavior works but emits the warning.

Solutions

  1. Move the ownership filename setting into cassandra.yaml (startup check / file_system_ownership config) and remove the -D system property from jvm-server.options
  2. Restart and verify the warning no longer appears and ownership check still finds the token/ownership file
  3. Search deployment tooling (ansible/chef/puppet templates) for the old flag to prevent regression

Example fix

# before (jvm-server.options)
-Dcassandra.fs_ownership_filename=/var/lib/cassandra/ownership
# after (cassandra.yaml)
file_system_ownership_check:
  ownership_filename: /var/lib/cassandra/ownership
Defensive patterns

Strategy: validation

Validate before calling

// fail fast in deployment tooling if the deprecated flag is present
if (System.getProperty("cassandra.fs_ownership_filename") != null)
    throw new IllegalStateException("Use cassandra.yaml file_system_ownership config instead of the deprecated -D flag");

Prevention

When it happens

Trigger: getFsOwnershipFilename() is called (via tokenFilename) while the CassandraRelevantProperties.FILE_SYSTEM_CHECK_OWNERSHIP_FILENAME system property is set on the JVM command line or in jvm-server.options.

Common situations: Upgrades from older Cassandra versions where the ownership filename was configured via -D system property; operators copying old jvm-server.options files onto new versions.

Understand the failure class

Background: "is deprecated and will be removed" — deprecation warnings for old API names, keywords, and options, and how to migrate before the removal release — this error's family across 29 libraries.

Related errors


AI-assisted analysis of apache/cassandra@88fd0f6a0e (2026-09-10). Data as JSON: /api/errors/5a8ee733082a2816. Report an issue: GitHub.

Appendix: source

Thrown at src/java/org/apache/cassandra/service/FileSystemOwnershipCheck.java:298

        }
    }

    private StartupException exception(String message)
    {
        return new StartupException(StartupException.ERR_WRONG_DISK_STATE, ERROR_PREFIX + message);
    }

    public boolean isEnabled(StartupChecksConfiguration options)
    {
        boolean enabledFromYaml = options.isEnabled(name());
        return CassandraRelevantProperties.FILE_SYSTEM_CHECK_ENABLE.getBoolean(enabledFromYaml);
    }

    public String getFsOwnershipFilename(Map<String, Object> config)
    {
        if (CassandraRelevantProperties.FILE_SYSTEM_CHECK_OWNERSHIP_FILENAME.isPresent())
        {
            logger.warn(String.format("Cassandra system property flag %s is deprecated and you should " +
                                      "use startup check configuration in cassandra.yaml",
                                      CassandraRelevantProperties.FILE_SYSTEM_CHECK_OWNERSHIP_FILENAME.getKey()));
            return CassandraRelevantProperties.FILE_SYSTEM_CHECK_OWNERSHIP_FILENAME.getString();
        }
        else
        {
            Object fsOwnershipFilename = config.get("ownership_filename");
            return fsOwnershipFilename == null
                   ? CassandraRelevantProperties.FILE_SYSTEM_CHECK_OWNERSHIP_FILENAME.getDefaultValue()
                   : (String) fsOwnershipFilename;
        }
    }

    public String getOwnershipToken(Map<String, Object> config)
    {
        if (CassandraRelevantProperties.FILE_SYSTEM_CHECK_OWNERSHIP_TOKEN.isPresent())
        {
            logger.warn(String.format("Cassandra system property flag %s is deprecated and you should " +

View on GitHub (pinned to 88fd0f6a0e)