{"record":{"id":"1b4e90918882118f","repo":"apache/cassandra","slug":"this-feature-has-been-removed","errorCode":null,"errorMessage":"This feature has been removed","messagePattern":"This feature has been removed","errorType":"exception","errorClass":"UnsupportedOperationException","httpStatus":null,"severity":"warning","filePath":"src/java/org/apache/cassandra/net/MessagingServiceMBeanImpl.java","lineNumber":260,"sourceCode":"\n    // these are not messages that time out on sending, but callbacks that timedout without receiving a response\n    @Override\n    public Map<String, Long> getTimeoutsPerHostWithPort()\n    {\n        Map<String, Long> result = new HashMap<>(channelManagers.size());\n        for (Map.Entry<InetAddressAndPort, OutboundConnections> entry : channelManagers.entrySet())\n        {\n            String ip = entry.getKey().toString();\n            long recent = entry.getValue().expiredCallbacks();\n            result.put(ip, recent);\n        }\n        return result;\n    }\n\n    @Override\n    public Map<String, Double> getBackPressurePerHost()\n    {\n        throw new UnsupportedOperationException(\"This feature has been removed\");\n    }\n\n    @Override\n    public void setBackPressureEnabled(boolean enabled)\n    {\n        throw new UnsupportedOperationException(\"This feature has been removed\");\n    }\n\n    @Override\n    public boolean isBackPressureEnabled()\n    {\n        return false;\n    }\n\n    @Override\n    public void reloadSslCertificates()\n    {\n        SSLFactory.forceCheckCertFiles();","sourceCodeStart":242,"sourceCodeEnd":278,"githubUrl":"https://github.com/apache/cassandra/blob/88fd0f6a0eaed8943f05ac9e8f947882b8ddc8f1/src/java/org/apache/cassandra/net/MessagingServiceMBeanImpl.java#L242-L278","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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"],"exampleFix":"// before (ops script)\nMap<String,Double> bp = mbean.getBackPressurePerHost();\n// after\nif (!mbean.isBackPressureEnabled()) { /* use dropped-messages metrics instead */ }","handlingStrategy":"try-catch","validationCode":"// skip if back-pressure is known removed (Cassandra >= 4.0)\nif (cassandraVersion.startsWith(\"4.\")) return; // don't call getBackPressurePerHost","typeGuard":null,"tryCatchPattern":"try { Map<String,Double> bp = mbean.getBackPressurePerHost(); } catch (UnsupportedOperationException e) { /* feature removed; fall back to dropped-message metrics */ }","preventionTips":["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"],"tags":["jmx","removed-feature","monitoring","backpressure"],"backgroundTag":"unsupported-operation","analyzedSha":"88fd0f6a0eaed8943f05ac9e8f947882b8ddc8f1","analyzedAt":"2026-09-10T07:29:22.284Z","contentChangedAt":"2026-09-10T07:29:22.284Z","schemaVersion":2},"datasetVersion":"2026-09-17T15:17:12.973Z"}