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
- curl 'http://<host>:<httpPort>/jmx?qry=<beanQuery>' and copy the exact attribute name out of the first bean object
- Make the qry= more specific so the bean carrying the property is the first element of the beans array
- Verify the attribute still exists in the Hadoop version running inside Dynamometer
- 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
- Pin property names against the exact Hadoop version you replay
- Prefer reading attribute names from a live curl of the bean rather than docs/memory
- Keep the qry= filter narrow so the first bean is deterministic
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
- Federated metrics is not initialized
- Namenode metrics is not initialized
- - account name is not fully qualified.
- Exception while initializing metric credentials
- Unexpected format of JMX JSON response for: {}
AI-assisted analysis of apache/hadoop@2add963021 (2026-08-22).
Data as JSON: /api/errors/5d11c9b7308c948c.
Report an issue: GitHub.