com.alibaba.otter.node.etl.select.exceptions.SelectException: java.lang.NullPointerException

6tqwzwtp  于 7个月前  发布在  Java
关注(0)|答案(2)|浏览(187)

有两个pipeline(单向,mysql5.7.16-log)跑着跑着突然就挂起,报了这个错,没找到其他相关日志。。

  1. pid:15 nid:1 exception:setl:com.alibaba.otter.node.etl.select.exceptions.SelectException: java.lang.NullPointerException
  2. at com.alibaba.otter.node.etl.select.selector.MessageParser.parse(MessageParser.java:209)
  3. at com.alibaba.otter.node.etl.select.selector.canal.CanalEmbedSelector.selector(CanalEmbedSelector.java:258)
  4. at com.alibaba.otter.node.etl.select.SelectTask.processSelect(SelectTask.java:236)
  5. at com.alibaba.otter.node.etl.select.SelectTask.access$300(SelectTask.java:94)
  6. at com.alibaba.otter.node.etl.select.SelectTask$1.run(SelectTask.java:208)
  7. at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
  8. at java.util.concurrent.FutureTask.run(FutureTask.java:266)
  9. at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
  10. at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
  11. at java.lang.Thread.run(Thread.java:745)
  12. Caused by: java.lang.NullPointerException
  13. at com.alibaba.otter.node.etl.select.selector.MessageParser.internParse(MessageParser.java:378)
  14. at com.alibaba.otter.node.etl.select.selector.MessageParser.parse(MessageParser.java:181)
rkttyhzu

rkttyhzu1#

加了log,这个DataMedia为null了。看到是ddl相关的(源/目标库名,表名均相同),关闭ddl与跳过ddl异常,正常后,再开启 ddl 恢复了

  1. DataMedia dataMedia = ConfigHelper.findSourceDataMedia(pipeline,
  2. schemaName,
  3. tableName,
  4. notExistReturnNull);
  5. logger.warn("##### schemaName: "+schemaName+" tableName: "+tableName+" notExistReturnNull "+notExistReturnNull+" dataMedia:"+ JSON.toJSONString(dataMedia));
  6. // 如果EventType是CREATE/ALTER,需要reload
  7. // DataMediaInfo;并且把CREATE/ALTER类型的事件丢弃掉.
  8. if (dataMedia != null && (eventType.isCreate() || eventType.isAlter() || eventType.isRename())) {
  9. DbDialect dbDialect = dbDialectFactory.getDbDialect(pipeline.getId(),
  10. (DbMediaSource) dataMedia.getSource());
  11. dbDialect.reloadTable(schemaName, tableName);// 更新下meta信息
  12. }
  13. boolean ddlSync = pipeline.getParameters().getDdlSync();
  14. if (ddlSync) {
  15. // 处理下ddl操作
  16. EventData eventData = new EventData();
  17. eventData.setSchemaName(schemaName);
  18. eventData.setTableName(tableName);
  19. eventData.setEventType(eventType);
  20. eventData.setExecuteTime(entry.getHeader().getExecuteTime());
  21. eventData.setSql(rowChange.getSql());
  22. eventData.setDdlSchemaName(rowChange.getDdlSchemaName());
  23. eventData.setTableId(dataMedia.getId());
  24. return Arrays.asList(eventData);
展开查看全部
j91ykkif

j91ykkif2#

解决了吗兄弟,什么原因,遇到了类似的错误

相关问题