{"record":{"id":"39b277ee28536ec0","repo":"pinpoint-apm/pinpoint","slug":"createtable","errorCode":null,"errorMessage":"createTable : ","messagePattern":"createTable : ","errorType":"validation","errorClass":"InvalidHbaseSchemaException","httpStatus":null,"severity":"error","filePath":"hbase/hbase-schema/src/main/java/com/navercorp/pinpoint/hbase/schema/reader/xml/mapper/ChangeSetMapper.java","lineNumber":91,"sourceCode":"\n    private List<TableChange> mapTableChanges(List<com.navercorp.pinpoint.hbase.schema.definition.xml.ChangeSet.ModifyTable> modifyTables,\n                                              List<com.navercorp.pinpoint.hbase.schema.definition.xml.ChangeSet.CreateTable> createTables) {\n        if (modifyTables.isEmpty() && createTables.isEmpty()) {\n            return Collections.emptyList();\n        }\n        List<TableChange> tableChanges = new ArrayList<>(modifyTables.size() + createTables.size());\n        for (com.navercorp.pinpoint.hbase.schema.definition.xml.ChangeSet.ModifyTable modifyTable : modifyTables) {\n            try {\n                tableChanges.add(tableChangeMapper.map(modifyTable));\n            } catch (InvalidHbaseSchemaException e) {\n                throw new InvalidHbaseSchemaException(\"modifyTable : \" + modifyTable.getName() + \", \" + e.getMessage(), e.getCause());\n            }\n        }\n        for (com.navercorp.pinpoint.hbase.schema.definition.xml.ChangeSet.CreateTable createTable : createTables) {\n            try {\n                tableChanges.add(tableChangeMapper.map(createTable));\n            } catch (InvalidHbaseSchemaException e) {\n                throw new InvalidHbaseSchemaException(\"createTable : \" + createTable.getName() + \", \" + e.getMessage(), e.getCause());\n            }\n        }\n        return tableChanges;\n    }\n}\n","sourceCodeStart":73,"sourceCodeEnd":97,"githubUrl":"https://github.com/pinpoint-apm/pinpoint/blob/744c3d3075e595656abb1ae331ad2c0e4c9eb996/hbase/hbase-schema/src/main/java/com/navercorp/pinpoint/hbase/schema/reader/xml/mapper/ChangeSetMapper.java#L73-L97","documentation":"Same wrapping pattern as modifyTable but for <createTable> elements: any InvalidHbaseSchemaException from TableChangeMapper while mapping a createTable is rethrown with \"createTable : <name>, \" plus the original message and cause, pinpointing which table definition is invalid.","triggerScenarios":"A <createTable> element in a change set fails TableChangeMapper validation — e.g. missing table name, invalid split option, or invalid nested column family definitions.","commonSituations":"New table definitions copied from templates with placeholder names left empty; invalid splitOption values (empty Manual keys, Auto(1)); nested createColumnFamily without a name.","solutions":["Read the nested cause message for the exact invalid field in the createTable named in the message","Supply the missing/invalid attribute (e.g. table name or a valid split option)","Validate the XML against the XSD before running the schema tool","Fix nested column family elements so names and configurations are valid"],"exampleFix":"// before\n<createTable name=\"\"></createTable>\n// after\n<createTable name=\"AgentStat\"><createColumnFamily name=\"CF\"></createColumnFamily></createTable>","handlingStrategy":"try-catch","validationCode":"// pre-check createTable elements for required fields before loading\nfor (Element ct : createTableElements) {\n    if (ct.getAttribute(\"name\").isEmpty()) throw new IllegalArgumentException(\"createTable missing name\");\n}","typeGuard":null,"tryCatchPattern":"try {\n    changeSets = schemaReader.loadChangeSets(resource);\n} catch (InvalidHbaseSchemaException e) {\n    if (e.getMessage().startsWith(\"createTable : \")) {\n        String table = e.getMessage().split(\",\")[0].substring(\"createTable : \".length());\n        logger.error(\"Invalid createTable for {}\", table, e.getCause());\n    } else {\n        throw e;\n    }\n}","preventionTips":["Verify table name and split options are present and valid in every createTable","Validate nested createColumnFamily names before loading","Run XSD validation as a build step"],"tags":["hbase","xml","schema-validation","create-table"],"backgroundTag":"schema-validation-failed","analyzedSha":"744c3d3075e595656abb1ae331ad2c0e4c9eb996","analyzedAt":"2026-09-07T18:48:45.289Z","contentChangedAt":"2026-09-07T18:48:45.289Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}