{"record":{"id":"35bfa21a5216f971","repo":"alibaba/canal","slug":"error-parser-of-eromanga-event-has-an-error-d","errorCode":null,"errorMessage":"ERROR ## parser of eromanga-event has an error , data:{}","messagePattern":"ERROR ## parser of eromanga-event has an error , data:(.+?)","errorType":"exception","errorClass":"RuntimeException","httpStatus":null,"severity":"error","filePath":"client-adapter/common/src/main/java/com/alibaba/otter/canal/client/adapter/support/MessageUtil.java","lineNumber":33,"sourceCode":"public class MessageUtil {\n\n    public static List<Dml> parse4Dml(String destination, String groupId, Message message) {\n        if (message == null) {\n            return null;\n        }\n        List<CanalEntry.Entry> entries = message.getEntries();\n        List<Dml> dmls = new ArrayList<>(entries.size());\n        for (CanalEntry.Entry entry : entries) {\n            if (entry.getEntryType() == CanalEntry.EntryType.TRANSACTIONBEGIN\n                || entry.getEntryType() == CanalEntry.EntryType.TRANSACTIONEND) {\n                continue;\n            }\n\n            CanalEntry.RowChange rowChange;\n            try {\n                rowChange = CanalEntry.RowChange.parseFrom(entry.getStoreValue());\n            } catch (Exception e) {\n                throw new RuntimeException(\"ERROR ## parser of eromanga-event has an error , data:\" + entry.toString(),\n                    e);\n            }\n\n            CanalEntry.EventType eventType = rowChange.getEventType();\n\n            final Dml dml = new Dml();\n            dml.setIsDdl(rowChange.getIsDdl());\n            dml.setDestination(destination);\n            dml.setGroupId(groupId);\n            dml.setDatabase(entry.getHeader().getSchemaName());\n            dml.setTable(entry.getHeader().getTableName());\n            dml.setType(eventType.toString());\n            dml.setEs(entry.getHeader().getExecuteTime());\n            dml.setIsDdl(rowChange.getIsDdl());\n            dml.setTs(System.currentTimeMillis());\n            dml.setSql(rowChange.getSql());\n            dmls.add(dml);\n            List<Map<String, Object>> data = new ArrayList<>();","sourceCodeStart":15,"sourceCodeEnd":51,"githubUrl":"https://github.com/alibaba/canal/blob/87be50e87686a3e8af08c368d0e1ffd1f59eb04a/client-adapter/common/src/main/java/com/alibaba/otter/canal/client/adapter/support/MessageUtil.java#L15-L51","documentation":"Error \"ERROR ## parser of eromanga-event has an error , data:{}\" thrown in alibaba/canal.","triggerScenarios":"Thrown at client-adapter/common/src/main/java/com/alibaba/otter/canal/client/adapter/support/MessageUtil.java:33 when the library encounters an invalid state.","commonSituations":"Entry parse failure in MessageUtil. Do not let one bad entry abort the batch; log the raw data bounded in size and skip or route the entry to an error path.","solutions":["Check that the message bytes are valid canal Entry protobuf data; corrupted or non-canal messages on the topic cause this parse error.","Ensure producer and consumer use compatible canal message serialization (flatMessage vs raw Entry).","If using MQ, verify the topic contains only canal-produced messages for this instance."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"87be50e87686a3e8af08c368d0e1ffd1f59eb04a","analyzedAt":"2026-08-14T04:30:11.918Z","schemaVersion":2},"datasetVersion":"2026-08-14T05:17:29.042Z"}