pinpoint-apm/pinpoint · critical · HbaseSchemaParseException
Error loading change sets from
Error message
Error loading change sets from
What it means
XmlHbaseSchemaReader.loadChangeSets wraps any unexpected Exception (other than HbaseSchemaParseException, which is rethrown) while parsing the XML schema definition into a HbaseSchemaParseException carrying the resource path. It signals that reading/interpreting the change-set XML failed for a reason other than a recognized parse error.
Source
Thrown at hbase/hbase-schema/src/main/java/com/navercorp/pinpoint/hbase/schema/reader/xml/XmlHbaseSchemaReader.java:86
/**
* Loads change sets from the hbase schema xml file at the given path.
*
* @param path path to hbase schema xml file
* @return list of change sets loaded
* @throws HbaseSchemaParseException if there was a problem reading or parsing from the schema xml file
*/
@Override
public List<ChangeSet> loadChangeSets(String path) {
Resource resource = resourceLoader.getResource(path);
XmlParseContext xmlParseContext = new XmlParseContext(resource);
try {
loadChangeSets(xmlParseContext);
} catch (HbaseSchemaParseException e) {
logger.error("Error loading change sets from {}", xmlParseContext.getResource(), e);
throw e;
} catch (Exception e) {
logger.error("Error loading change sets from {}", xmlParseContext.getResource(), e);
throw new HbaseSchemaParseException("Error loading change sets from " + xmlParseContext.getResource(), e);
}
return xmlParseContext.getChangeSets();
}
private void loadChangeSets(XmlParseContext xmlParseContext) throws IOException {
Resource resource = xmlParseContext.getResource();
XmlHbaseSchemaParseResult parseResult = readHbaseSchema(resource);
for (String includeFile : parseResult.getIncludeFiles()) {
Resource includeResource = createResource(resource, includeFile);
xmlParseContext.setResource(includeResource);
loadChangeSets(xmlParseContext);
}
xmlParseContext.addChangeSets(parseResult.getChangeSets());
}
private Resource createResource(Resource currentResource, String path) throws IOException {
if (isAbsolutePath(path)) {
return resourceLoader.getResource(path);View on GitHub (pinned to 744c3d3075)
Solutions
- Check the wrapped cause (e) and the logged resource path to find the root failure
- Verify the resource path is on the classpath and spelled correctly
- Validate the schema XML against its XSD to catch structural problems
- Open the resource with a plain reader first to confirm it is readable and well-formed
Defensive patterns
Strategy: try-catch
Validate before calling
Resource res = new ClassPathResource(path);
if (!res.exists()) {
throw new IllegalStateException("Schema XML not on classpath: " + path);
} Try / catch
try {
schemaReader.loadChangeSets(resource);
} catch (HbaseSchemaParseException e) {
logger.error("Failed to load schema from {}", resource, e.getCause());
throw e;
} Prevention
- Confirm schema XML paths are on the classpath and packaged in the jar
- Run an XSD validation over schema XML in CI before deployment
- Read the wrapped cause — the generic message never names the root problem
When it happens
Trigger: Any IOException or runtime exception thrown by loadChangeSets(xmlParseContext) — e.g. unreadable classpath resource, malformed XML raising an unchecked exception, mapping errors — inside loadChangeSets.
Common situations: Schema XML file missing from the classpath/jar; file exists but XML is malformed; include resources pointing at nonexistent paths; JAXB/IO problems from a corrupted or wrong-version schema definition file.
Understand the failure class
Background: Schema validation failed / invalid input schema: payload rejected because its shape doesn't match the expected schema — this error's family across 28 libraries.
Related errors
- Cyclic include detected for :
- Duplicate changeSet found. Id:
- Error computing md5 for change set id :
- modifyTable :
- createTable :
AI-assisted analysis of pinpoint-apm/pinpoint@744c3d3075 (2026-09-07).
Data as JSON: /api/errors/0c4140affa3fe3f8.
Report an issue: GitHub.