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
- Migrate to a supported snitch, e.g. GossipingPropertyFileSnitch/PropertyFileSnitch with explicit DC/Rack definitions.
- Replace endpoint_snitch in cassandra.yaml before the next major upgrade.
- Remove references to the deprecated provider from tooling and scripts.
- 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
- Audit cassandra.yaml for deprecated snitch classes before each major upgrade.
- Migrate to GossipingPropertyFileSnitch/PropertyFileSnitch with explicit dc/rack.
- Subscribe to Cassandra upgrade notes listing removed classes.
- Test snitch changes in staging with nodetool ring verification.
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
- is deprecated and not actively maintained. It will be…
- Config contains both old and new keys for the same…
- Configuration must specify either node_proximity and…
- DC or rack not found in snitch properties, check your…
- Initial location provider rejected registration location…
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)