apache/cassandra · warning

is deprecated and not actively maintained. It will be…

Error message

{} is deprecated and not actively maintained. It will be removed in the next major version of Cassandra.

What it means

Constructing a CloudstackLocationProvider logs this warning because the Cloudstack snitch/location-provider is deprecated and will be removed in the next major Cassandra version. Nothing failed; the constructor deliberately warns so operators notice before an upgrade removes the class.

Solutions

  1. Migrate to a supported snitch, e.g. GossipingPropertyFileSnitch/PropertyFileSnitch with explicit DC/Rack definitions.
  2. Replace endpoint_snitch in cassandra.yaml before the next major upgrade.
  3. Remove references to the deprecated provider from tooling and scripts.
  4. Plan the snitch change during a rolling restart window since it affects replica placement.

Example fix

// before (cassandra.yaml)
endpoint_snitch: CloudstackSnitch
// after
endpoint_snitch: GossipingPropertyFileSnitch  # with cassandra-rackdc.properties defining dc/rack
Defensive patterns

Strategy: validation

Validate before calling

# check cassandra.yaml before deploy
grep -q 'Cloudstack' conf/cassandra.yaml && echo 'deprecated snitch configured' && exit 1

Prevention

When it happens

Trigger: Creating CloudstackLocationProvider directly, or indirectly via any CloudstackSnitch constructor (endpoint_snitch loaded from cassandra.yaml, or programmatic instantiation).

Common situations: cassandra.yaml still sets endpoint_snitch: CloudstackSnitch on clusters deployed in Apache Cloudstack; inherited configs after upgrading Cassandra where the snitch was never migrated.

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/8c0317eeb9e5bbf5. Report an issue: GitHub.

Appendix: source

Thrown at src/java/org/apache/cassandra/locator/CloudstackLocationProvider.java:67

    };

    /**
     * Used via reflection by DatabaseDescriptor::createInitialLocationProvider
     */
    public CloudstackLocationProvider() throws IOException
    {
        this(new SnitchProperties(new Properties()));
    }

    public CloudstackLocationProvider(SnitchProperties snitchProperties) throws IOException
    {
        this(new DefaultCloudMetadataServiceConnector(snitchProperties.putIfAbsent(METADATA_URL_PROPERTY, csMetadataEndpoint())));
    }

    public CloudstackLocationProvider(AbstractCloudMetadataServiceConnector connector) throws IOException
    {
        super(connector, CloudstackLocationProvider::resolveLocation);
        logger.warn("{} is deprecated and not actively maintained. It will be removed in the next " +
                    "major version of Cassandra.", CloudstackSnitch.class.getName());
    }

    private static Location resolveLocation(AbstractCloudMetadataServiceConnector connector) throws IOException
    {
        String zone = connector.apiCall(ZONE_NAME_QUERY_URI);
        String[] zoneParts = zone.split("-");

        if (zoneParts.length != 3)
            throw new ConfigurationException("CloudstackSnitch cannot handle invalid zone format: " + zone);

        return new Location(zoneParts[0] + '-' + zoneParts[1], zoneParts[2]);
    }

    private static String csMetadataEndpoint() throws ConfigurationException
    {
        for (String lease_uri : LEASE_FILES)
        {

View on GitHub (pinned to 88fd0f6a0e)