{"record":{"id":"3f94740710d2d04c","repo":"apache/cassandra","slug":"error-reading","errorCode":null,"errorMessage":"Error reading: ","messagePattern":"Error reading: ","errorType":"exception","errorClass":"RuntimeException","httpStatus":null,"severity":"error","filePath":"src/java/org/apache/cassandra/tools/NodeProbe.java","lineNumber":2032,"sourceCode":"          switch (metricName)\n          {\n              case ThreadPoolMetrics.ACTIVE_TASKS:\n              case ThreadPoolMetrics.PENDING_TASKS:\n              case ThreadPoolMetrics.COMPLETED_TASKS:\n              case ThreadPoolMetrics.CORE_POOL_SIZE:\n              case ThreadPoolMetrics.MAX_POOL_SIZE:\n              case ThreadPoolMetrics.MAX_TASKS_QUEUED:\n                  return JMX.newMBeanProxy(mbeanServerConn, oName, CassandraMetricsRegistry.JmxGaugeMBean.class).getValue();\n              case ThreadPoolMetrics.TOTAL_BLOCKED_TASKS:\n              case ThreadPoolMetrics.CURRENTLY_BLOCKED_TASKS:\n                  return JMX.newMBeanProxy(mbeanServerConn, oName, CassandraMetricsRegistry.JmxCounterMBean.class).getCount();\n              default:\n                  throw new AssertionError(\"Unknown ThreadPools metric name \" + metricName);\n          }\n      }\n      catch (Exception e)\n      {\n          throw new RuntimeException(\"Error reading: \" + name, e);\n      }\n    }\n\n    public Object getSaiMetric(String ks, String cf, String metricName)\n    {\n        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)","sourceCodeStart":2014,"sourceCodeEnd":2050,"githubUrl":"https://github.com/apache/cassandra/blob/88fd0f6a0eaed8943f05ac9e8f947882b8ddc8f1/src/java/org/apache/cassandra/tools/NodeProbe.java#L2014-L2050","documentation":"RuntimeException thrown by NodeProbe's thread-pool metric reader when reading the JMX attribute fails (IOException/instance errors while proxying the gauge/counter MBean). It is a wrapper guard: the metric name was recognized but the MBean attribute could not be read from the remote server.","triggerScenarios":"Thrown at src/java/org/apache/cassandra/tools/NodeProbe.java:2032 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Retry; transient JMX failures are common under load","Verify the thread pool MBean still exists (pool may have been removed)","Check JMX connection stability and timeouts"],"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"}