apache/cassandra · warning · UnsupportedOperationException
This feature has been removed
Error message
This feature has been removed
What it means
The JMX MBean operation getBackPressurePerHost() unconditionally throws UnsupportedOperationException because internode back-pressure was removed in Cassandra 4.0. The method remains only for MBean interface compatibility.
Solutions
- Remove back-pressure MBean polling from monitoring scripts/dashboards
- Replace with 4.x-appropriate internode metrics (e.g. dropped-message metrics)
- Update automation to skip these calls on Cassandra >= 4.0 (check ReleaseVersion via JMX)
- Keep 3.x-only tooling pinned to 3.x clusters
Example fix
// before (ops script)
Map<String,Double> bp = mbean.getBackPressurePerHost();
// after
if (!mbean.isBackPressureEnabled()) { /* use dropped-messages metrics instead */ } Defensive patterns
Strategy: try-catch
Validate before calling
// skip if back-pressure is known removed (Cassandra >= 4.0)
if (cassandraVersion.startsWith("4.")) return; // don't call getBackPressurePerHost Try / catch
try { Map<String,Double> bp = mbean.getBackPressurePerHost(); } catch (UnsupportedOperationException e) { /* feature removed; fall back to dropped-message metrics */ } Prevention
- Remove 3.x back-pressure MBean queries when upgrading to 4.x
- Gate monitoring code on the cluster's ReleaseVersion JMX attribute
- Use isBackPressureEnabled() (returns false) as a feature probe first
- Migrate dashboards to 4.x internode metrics
When it happens
Trigger: Invoking the getBackPressurePerHost() JMX operation on org.apache.cassandra.net:type=MessagingService, e.g. via jmxterm, JConsole, or monitoring scripts, on a Cassandra 4+ node.
Common situations: Monitoring/ops tooling written for Cassandra 3.x still polling the back-pressure MBean after upgrading to 4.x; dashboards/alerts referencing the removed operation.
Understand the failure class
Background: UnsupportedOperationException and "is not supported" errors: when a library deliberately refuses a call — this error's family across 30 libraries.
Related errors
- JMX connection server is not enabled for either local or…
- JMX is not enabled to receive remote connections. Please…
- Aborted garbage collection for at least one table in…
- Aborted garbage collection for at least one table, check…
- Access denied
AI-assisted analysis of apache/cassandra@88fd0f6a0e (2026-09-10).
Data as JSON: /api/errors/1b4e90918882118f.
Report an issue: GitHub.
Appendix: source
Thrown at src/java/org/apache/cassandra/net/MessagingServiceMBeanImpl.java:260
// these are not messages that time out on sending, but callbacks that timedout without receiving a response
@Override
public Map<String, Long> getTimeoutsPerHostWithPort()
{
Map<String, Long> result = new HashMap<>(channelManagers.size());
for (Map.Entry<InetAddressAndPort, OutboundConnections> entry : channelManagers.entrySet())
{
String ip = entry.getKey().toString();
long recent = entry.getValue().expiredCallbacks();
result.put(ip, recent);
}
return result;
}
@Override
public Map<String, Double> getBackPressurePerHost()
{
throw new UnsupportedOperationException("This feature has been removed");
}
@Override
public void setBackPressureEnabled(boolean enabled)
{
throw new UnsupportedOperationException("This feature has been removed");
}
@Override
public boolean isBackPressureEnabled()
{
return false;
}
@Override
public void reloadSslCertificates()
{
SSLFactory.forceCheckCertFiles();View on GitHub (pinned to 88fd0f6a0e)