pinpoint-apm/pinpoint · error · HbaseSchemaParseException
Error computing md5 for change set id :
Error message
Error computing md5 for change set id :
What it means
ChangeSetMapper.mapChangeSet marshals the parsed change set back to XML to compute its md5 checksum. If a JAXBException with a linked exception occurs during this round-trip, the linked cause is wrapped in a HbaseSchemaParseException mentioning the change set id. (A JAXBException with no linked exception becomes a plain IllegalStateException "JAXB error".)
Source
Thrown at hbase/hbase-schema/src/main/java/com/navercorp/pinpoint/hbase/schema/reader/xml/mapper/ChangeSetMapper.java:62
this.jaxbContext = Objects.requireNonNull(jaxbContext, "jaxbContext");
this.schema = schema;
this.tableChangeMapper = new TableChangeMapper();
}
public ChangeSet mapChangeSet(com.navercorp.pinpoint.hbase.schema.definition.xml.ChangeSet changeSet) {
try {
StringWriter stringWriter = new StringWriter(); // no need to close StringWriter
createMarshaller().marshal(changeSet, stringWriter);
String value = stringWriter.toString();
List<TableChange> tableChangeList = mapTableChanges(changeSet.getModifyTable(), changeSet.getCreateTable());
return new ChangeSet(changeSet.getId(), value, tableChangeList);
} catch (JAXBException e) {
Throwable linkedException = e.getLinkedException();
if (linkedException == null) {
throw new IllegalStateException("JAXB error", e);
}
throw new HbaseSchemaParseException("Error computing md5 for change set id : " + changeSet.getId(), linkedException);
}
}
private Marshaller createMarshaller() throws JAXBException {
Marshaller marshaller = jaxbContext.createMarshaller();
marshaller.setSchema(schema);
marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");
marshaller.setProperty(Marshaller.JAXB_FRAGMENT, true);
return marshaller;
}
private List<TableChange> mapTableChanges(List<com.navercorp.pinpoint.hbase.schema.definition.xml.ChangeSet.ModifyTable> modifyTables,
List<com.navercorp.pinpoint.hbase.schema.definition.xml.ChangeSet.CreateTable> createTables) {
if (modifyTables.isEmpty() && createTables.isEmpty()) {
return Collections.emptyList();
}
List<TableChange> tableChanges = new ArrayList<>(modifyTables.size() + createTables.size());
for (com.navercorp.pinpoint.hbase.schema.definition.xml.ChangeSet.ModifyTable modifyTable : modifyTables) {View on GitHub (pinned to 744c3d3075)
Solutions
- Inspect getLinkedException() in the stack trace — it names the actual XML/schema problem
- Fix the offending changeSet XML element identified by the id in the message
- Validate the schema XML against the JAXB XSD before loading
- Ensure the JAXB runtime version matches the one the definitions were generated for
Example fix
// before <createTable name="AgentStat"> <!-- missing required attribute --> // after <createTable name="AgentStat" option="..."> <!-- conforms to XSD -->
Defensive patterns
Strategy: try-catch
Validate before calling
// validate XML against the XSD before the reader marshals it SchemaFactory f = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); Validator v = f.newSchema(xsd).newValidator(); v.validate(new StreamSource(changeSetXml));
Try / catch
try {
changeSets = schemaReader.loadChangeSets(resource);
} catch (HbaseSchemaParseException e) {
if (e.getMessage().startsWith("Error computing md5")) {
logger.error("Bad changeSet XML, id={}", idFromMessage(e.getMessage()), e.getCause());
} else {
throw e;
}
} Prevention
- Always inspect the linked cause — the message only names the changeSet id
- Validate change-set XML against the definition XSD in CI
- Keep the JAXB runtime version aligned with generated definition classes
When it happens
Trigger: JAXB marshalling/validation failure with a linked exception while recomputing a changeSet's checksum — e.g. content that violates the XML schema, or unmarshal-side errors surfaced with a cause during mapping.
Common situations: Change-set XML content that does not conform to the definition XSD (wrong element/attribute values); malformed XML caught during unmarshalling; JAXB version incompatibilities altering marshalling behavior.
Related errors
- Unexpected schema change log check sum for :
- Error loading change sets from
- Cyclic include detected for :
- Duplicate changeSet found. Id:
- modifyTable :
AI-assisted analysis of pinpoint-apm/pinpoint@744c3d3075 (2026-09-07).
Data as JSON: /api/errors/22b2a105af4eb4de.
Report an issue: GitHub.