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

  1. Remove back-pressure MBean polling from monitoring scripts/dashboards
  2. Replace with 4.x-appropriate internode metrics (e.g. dropped-message metrics)
  3. Update automation to skip these calls on Cassandra >= 4.0 (check ReleaseVersion via JMX)
  4. 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

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


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)