alibaba/canal · error · RuntimeException
ERROR ## parser of eromanga-event has an error , data:{}
Error message
ERROR ## parser of eromanga-event has an error , data:{} What it means
Error "ERROR ## parser of eromanga-event has an error , data:{}" thrown in alibaba/canal.
Source
Thrown at client-adapter/common/src/main/java/com/alibaba/otter/canal/client/adapter/support/MessageUtil.java:33
public class MessageUtil {
public static List<Dml> parse4Dml(String destination, String groupId, Message message) {
if (message == null) {
return null;
}
List<CanalEntry.Entry> entries = message.getEntries();
List<Dml> dmls = new ArrayList<>(entries.size());
for (CanalEntry.Entry entry : entries) {
if (entry.getEntryType() == CanalEntry.EntryType.TRANSACTIONBEGIN
|| entry.getEntryType() == CanalEntry.EntryType.TRANSACTIONEND) {
continue;
}
CanalEntry.RowChange rowChange;
try {
rowChange = CanalEntry.RowChange.parseFrom(entry.getStoreValue());
} catch (Exception e) {
throw new RuntimeException("ERROR ## parser of eromanga-event has an error , data:" + entry.toString(),
e);
}
CanalEntry.EventType eventType = rowChange.getEventType();
final Dml dml = new Dml();
dml.setIsDdl(rowChange.getIsDdl());
dml.setDestination(destination);
dml.setGroupId(groupId);
dml.setDatabase(entry.getHeader().getSchemaName());
dml.setTable(entry.getHeader().getTableName());
dml.setType(eventType.toString());
dml.setEs(entry.getHeader().getExecuteTime());
dml.setIsDdl(rowChange.getIsDdl());
dml.setTs(System.currentTimeMillis());
dml.setSql(rowChange.getSql());
dmls.add(dml);
List<Map<String, Object>> data = new ArrayList<>();View on GitHub (pinned to 87be50e876)
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.
When it happens
Trigger: 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.
Common situations: 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.
AI-assisted analysis of alibaba/canal@87be50e876 (2026-08-14).
Data as JSON: /api/errors/35bfa21a5216f971.
Report an issue: GitHub.