Otter同步延迟导致数据库反查(补充)
在上一篇文章中,谈到Otter中出现反查会带来的问题 Otter同步延迟导致数据库反查(使用Otter遇到的问题二),在查看了代码后(DatabaseExtractor.java)发现反查中存在多层的判断。
本篇为对于双向同步出现问题的推测,不作为最终的结论
条件
代码如下:
if (flag && (eventData.getEventType().isInsert() || eventData.getEventType().isUpdate())) {// 判断是否需要反查
Future future = completionService.submit(new DatabaseExtractWorker(pipeline, item), null); // 提交进行并行查询
if (future.isDone()) {
// 立即判断一次,因为使用了CallerRun可能当场跑出结果,针对有异常时快速响应,而不是等跑完所有的才抛异常
try {
future.get();
} catch (InterruptedException e) {
cancel(futures);// 取消完之后立马退出
throw new ExtractException(e);
} catch (ExecutionExcept