apache/hadoop · error · IOException

Property {} not found within {}

Error message

Property {} not found within {}

What it means

After the JMX JSON passes the shape check, the parser walks the first bean object looking for a field named exactly like the requested property. If no such field is found, ret stays null and this IOException names the property and the query. The endpoint and bean are fine; the first matching bean simply does not expose that attribute.

Source

Thrown at hadoop-tools/hadoop-dynamometer/hadoop-dynamometer-infra/src/main/java/org/apache/hadoop/tools/dynamometer/DynoInfraUtils.java:587

    while (objectDepth > 0) {
      JsonToken tok = parser.nextToken();
      if (tok == JsonToken.START_OBJECT) {
        objectDepth++;
      } else if (tok == JsonToken.END_OBJECT) {
        objectDepth--;
      } else if (tok == JsonToken.FIELD_NAME) {
        if (parser.getCurrentName().equals(property)) {
          parser.nextToken();
          ret = parser.getText();
          break;
        }
      }
    }
    parser.close();
    in.close();
    conn.disconnect();
    if (ret == null) {
      throw new IOException(
          "Property " + property + " not found within " + jmxBeanQuery);
    } else {
      return ret;
    }
  }

}

View on GitHub (pinned to 2add963021)

Solutions

  1. curl 'http://<host>:<httpPort>/jmx?qry=<beanQuery>' and copy the exact attribute name out of the first bean object
  2. Make the qry= more specific so the bean carrying the property is the first element of the beans array
  3. Verify the attribute still exists in the Hadoop version running inside Dynamometer
  4. Check spelling and case of the property string

Example fix

// before: attribute names are case-sensitive
String v = DynoInfraUtils.fetchJMXProperty(url, beanQuery, "missingblocks");
// after: use the exact name from the bean JSON
String v = DynoInfraUtils.fetchJMXProperty(url, beanQuery, "MissingBlocks");
Defensive patterns

Strategy: validation

Validate before calling

// fetch the bean JSON once and verify the attribute exists before polling for it
ObjectMapper om = new ObjectMapper();
JsonNode firstBean = om.readTree(new URL(jmxUrl)).path("beans").path(0);
if (!firstBean.has(property)) {
  throw new IllegalStateException("bean lacks attribute '" + property + "'; has: " + firstBean.fieldNames());
}

Prevention

When it happens

Trigger: Calling the JMX fetch helper with a property the bean does not define: a misspelled or wrong-case metric name, a metric renamed/removed in a different Hadoop version, or a qry= that matches several beans where the parser only scans the first one and it lacks the property.

Common situations: Replaying a fsimage against a different Hadoop version whose MBean attribute names changed, typo'd property constants, or asking a NameNode bean for a DataNode-only metric (e.g. 'VolumeInfo' style attributes).

Related errors


AI-assisted analysis of apache/hadoop@2add963021 (2026-08-22). Data as JSON: /api/errors/5d11c9b7308c948c. Report an issue: GitHub.