apache/cassandra · error · RuntimeException

Error reading:

Error message

Error reading: 

What it means

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.

Solutions

  1. Retry; transient JMX failures are common under load
  2. Verify the thread pool MBean still exists (pool may have been removed)
  3. Check JMX connection stability and timeouts
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at src/java/org/apache/cassandra/tools/NodeProbe.java:2032 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of apache/cassandra@88fd0f6a0e (2026-09-10). Data as JSON: /api/errors/3f94740710d2d04c. Report an issue: GitHub.

Appendix: source

Thrown at src/java/org/apache/cassandra/tools/NodeProbe.java:2032

          switch (metricName)
          {
              case ThreadPoolMetrics.ACTIVE_TASKS:
              case ThreadPoolMetrics.PENDING_TASKS:
              case ThreadPoolMetrics.COMPLETED_TASKS:
              case ThreadPoolMetrics.CORE_POOL_SIZE:
              case ThreadPoolMetrics.MAX_POOL_SIZE:
              case ThreadPoolMetrics.MAX_TASKS_QUEUED:
                  return JMX.newMBeanProxy(mbeanServerConn, oName, CassandraMetricsRegistry.JmxGaugeMBean.class).getValue();
              case ThreadPoolMetrics.TOTAL_BLOCKED_TASKS:
              case ThreadPoolMetrics.CURRENTLY_BLOCKED_TASKS:
                  return JMX.newMBeanProxy(mbeanServerConn, oName, CassandraMetricsRegistry.JmxCounterMBean.class).getCount();
              default:
                  throw new AssertionError("Unknown ThreadPools metric name " + metricName);
          }
      }
      catch (Exception e)
      {
          throw new RuntimeException("Error reading: " + name, e);
      }
    }

    public Object getSaiMetric(String ks, String cf, String metricName)
    {
        try
        {
            String scope = getSaiMetricScope(metricName);
            String objectNameStr = String.format("org.apache.cassandra.metrics:type=StorageAttachedIndex,keyspace=%s,table=%s,scope=%s,name=%s",ks, cf, scope, metricName);
            ObjectName oName = new ObjectName(objectNameStr);

            Set<ObjectName> matchingMBeans = mbeanServerConn.queryNames(oName, null);
            if (matchingMBeans.isEmpty())
                return null;

            return getSaiMetricValue(metricName, oName);
        }
        catch (MalformedObjectNameException e)

View on GitHub (pinned to 88fd0f6a0e)