{"record":{"id":"ff8ac13eff75e012","repo":"apache/cassandra","slug":"error-accessing-mbean-server","errorCode":null,"errorMessage":"Error accessing MBean server: ","messagePattern":"Error accessing MBean server: ","errorType":"exception","errorClass":"RuntimeException","httpStatus":null,"severity":"error","filePath":"src/java/org/apache/cassandra/tools/NodeProbe.java","lineNumber":2056,"sourceCode":"        try\n        {\n            String scope = getSaiMetricScope(metricName);\n            String objectNameStr = String.format(\"org.apache.cassandra.metrics:type=StorageAttachedIndex,keyspace=%s,table=%s,scope=%s,name=%s\",ks, cf, scope, metricName);\n            ObjectName oName = new ObjectName(objectNameStr);\n\n            Set<ObjectName> matchingMBeans = mbeanServerConn.queryNames(oName, null);\n            if (matchingMBeans.isEmpty())\n                return null;\n\n            return getSaiMetricValue(metricName, oName);\n        }\n        catch (MalformedObjectNameException e)\n        {\n            throw new RuntimeException(\"Invalid ObjectName format: \" + e.getMessage(), e);\n        }\n        catch (IOException e)\n        {\n            throw new RuntimeException(\"Error accessing MBean server: \" + e.getMessage(), e);\n        }\n    }\n\n    private Object getSaiMetricValue(String metricName, ObjectName oName) throws IOException\n    {\n        switch (metricName)\n        {\n            case \"QueryLatency\":\n                return JMX.newMBeanProxy(mbeanServerConn, oName, CassandraMetricsRegistry.JmxTimerMBean.class);\n            case \"PostFilteringReadLatency\":\n            case \"SSTableIndexesHit\":\n            case \"IndexSegmentsHit\":\n            case \"RowsFiltered\":\n                return JMX.newMBeanProxy(mbeanServerConn, oName, CassandraMetricsRegistry.JmxHistogramMBean.class);\n            case \"DiskUsedBytes\":\n            case \"TotalIndexCount\":\n            case \"TotalQueryableIndexCount\":\n                return JMX.newMBeanProxy(mbeanServerConn, oName, CassandraMetricsRegistry.JmxGaugeMBean.class).getValue();","sourceCodeStart":2038,"sourceCodeEnd":2074,"githubUrl":"https://github.com/apache/cassandra/blob/88fd0f6a0eaed8943f05ac9e8f947882b8ddc8f1/src/java/org/apache/cassandra/tools/NodeProbe.java#L2038-L2074","documentation":"RuntimeException wrapper from NodeProbe.getSaiMetric for IOException raised while querying or reading the SAI metric MBeans from the remote JMX server. The ObjectName was valid; the connection/query itself failed.","triggerScenarios":"Thrown at src/java/org/apache/cassandra/tools/NodeProbe.java:2056 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Check JMX connectivity and credentials","Retry the command; JMX I/O can fail transiently","Verify SAI metrics are registered on the target node"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"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"}