pinpoint-apm/pinpoint · error · InvalidHbaseSchemaException
Error applying changeSet :
Error message
Error applying changeSet :
What it means
HbaseSchemaCommandManager.applyChangeSet iterates a ChangeSet's TableChanges and applies each. Any exception thrown while applying (including the IllegalArgumentExceptions from applyTableChange) is wrapped in InvalidHbaseSchemaException carrying the change set id, signaling that the schema change set could not be applied to HBase.
Source
Thrown at hbase/hbase-schema/src/main/java/com/navercorp/pinpoint/hbase/schema/core/command/HbaseSchemaCommandManager.java:102
}
}
return filteredHtds;
}
public String getNamespace() {
return namespace;
}
public void applyChangeSet(ChangeSet changeSet) {
Objects.requireNonNull(changeSet, "changeSet");
List<TableChange> tableChanges = changeSet.getTableChanges();
try {
for (TableChange tableChange : tableChanges) {
applyTableChange(tableChange);
}
} catch (Exception e) {
throw new InvalidHbaseSchemaException("Error applying changeSet : " + changeSet.getId(), e);
}
}
private void applyTableChange(TableChange tableChange) {
ChangeType changeType = tableChange.getType();
TableName tableName = TableName.valueOf(namespace, tableChange.getName());
switch (changeType) {
case CREATE -> {
if (tableCommandMap.containsKey(tableName)) {
throw new IllegalArgumentException("Cannot create an existing table : " + tableName);
}
TableCommand createTableCommand = new CreateTableCommand(tableName, compressionAlgorithm, tableChange.getSplitKeys());
createTableCommand.applyConfiguration(tableChange.getTableConfiguration());
createTableCommand.applyColumnFamilyChanges(tableChange.getColumnFamilyChanges());
tableCommandMap.put(tableName, createTableCommand);
}
case MODIFY -> {View on GitHub (pinned to 744c3d3075)
Solutions
- Catch InvalidHbaseSchemaException and inspect the message for the failing changeSet id, then read the cause for the specific table problem.
- Skip or reconcile change sets whose tables already exist (use filterExecutedChangeSets to exclude applied ones).
- Align the live HBase schema with the change set expectations (create missing tables or drop/recreate in a dev environment).
Example fix
// before
manager.applyChangeSets(changeSets); // throws on any failure
// after
try {
manager.applyChangeSets(changeSets);
} catch (InvalidHbaseSchemaException e) {
logger.error("Failed applying changeSet: {}", e.getMessage(), e.getCause());
} Defensive patterns
Strategy: try-catch
Validate before calling
// Pre-check which change sets still need applying List<ChangeSet> pending = manager.filterExecutedChangeSets(changeSets); // apply only pending
Try / catch
try {
manager.applyChangeSets(changeSets);
} catch (InvalidHbaseSchemaException e) {
logger.error("ChangeSet {} failed: {}", e.getMessage(), e.getCause(), e);
// inspect cause: table exists / not found
} Prevention
- Always filter out already-applied change sets before applying.
- Keep live HBase schema and code-defined change sets in sync across environments.
- Inspect the wrapped cause for the specific table failure before re-running.
When it happens
Trigger: Calling applyChangeSet (directly or via initFromExistingTables/updateExistingSchemas) when a TableChange is invalid — e.g. creating an already-existing table, modifying a non-existent table, or an unsupported change type.
Common situations: Re-running schema initialization against an HBase instance where tables already exist; running a change set whose target table was dropped manually; schema drift between code-defined and live HBase schemas.
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
- Unexpected schema change log id, expected :
- Unexpected schema change log check sum for :
- Unexpected schema change log execution order for
- Cannot create an existing table :
- Cannot modify a non-existent table :
AI-assisted analysis of pinpoint-apm/pinpoint@744c3d3075 (2026-09-07).
Data as JSON: /api/errors/978ba0f39573a755.
Report an issue: GitHub.