Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

关于极限网关升新版本后报dirty_read的ERR报错 #49

Open
Xiongqq1 opened this issue Dec 17, 2024 · 9 comments
Open

关于极限网关升新版本后报dirty_read的ERR报错 #49

Xiongqq1 opened this issue Dec 17, 2024 · 9 comments

Comments

@Xiongqq1
Copy link

问题描述

  1. 极限网关用途
    极限网关双写,写主集群后,会将写成功的bulk请求保存到backup磁盘队列,采用离线处理器flow_runner异步消费backup队列,并将其进行bulk_reshuffer后,由其他离线处理器消费写到备ES集群。
  2. 升级后问题现象
    升级后,发现消费backup磁盘队列,总是出现脏读现象,对比1.25.0版本,调整了很多组合参数尝试,均无法消除。开trace看,虽然该ERR报错暂不会导致丢数,但看起来会重复处理数据,脏读时,会从上一次提交的consumer offset重新读取数据,有时候可能会出现很多次脏读(每一次都会从上一次提交的consumer offset重新读取数据),感觉有一定风险。

日志贴图

1.28.0新版本trace日志

极限网关日志_20241217144102_V1 28 0

@Xiongqq1
Copy link
Author

极限网关升级前trace日志,看起来比较正常

极限网关日志_20241217144102_V1 25 0

@Xiongqq1
Copy link
Author

是用的gateway-linux-amd64,操作系统redhat 8.6

@medcl
Copy link
Member

medcl commented Dec 19, 2024

有异常关闭网关的情况么?

@medcl
Copy link
Member

medcl commented Dec 19, 2024

这个错误应该没问题,是文件还没写完的过程中,读到了部分未写完的消息,这里报错是故意的,退出本次读取,重新打开文件并重试读的。

@Xiongqq1
Copy link
Author

有异常关闭网关的情况么?
大佬您好,
木有,升级都是正常停止之后做的哟,后来在测试环境,把网关铲掉,clean安装也会报这个脏读,对比了下1.25.0的trace日志,试着去调整了下消费backup队列的离线处理器的执行时间,到达文件末尾重试时间,消费者的workerSize、甚至磁盘队列的刷盘时间,仍然会报这个错。

@Xiongqq1
Copy link
Author

这个错误应该没问题,是文件还没写完的过程中,读到了部分未写完的消息,这里报错是故意的,退出本次读取,重新打开文件并重试读的。

这个读取会重复relplay消息么,我看日志第一次读,成功读到了20条消息,会有条日志success replay 20 message,然后马上脏读,从新读,读到25条消息,也会打条日志success replay 25 messge,然后又再次脏读,直到没有脏读为止。
后面,bulk_shuffer的磁盘队列,也会出现很多脏读,虽然日志不会报出来,但在队列状态的接口返回的信息中可以看到。

@medcl
Copy link
Member

medcl commented Dec 19, 2024

能确认消息被重复消费了么?

@Xiongqq1
Copy link
Author

能确认消息被重复消费了么?

消息应该会被重复处理,backup磁盘队列这边脏读,aysync_bulk队列也会脏读。而且脏读概率非常高,一分钟很多条。对比旧版本和新版本日志输出,感觉磁盘队列消费那块儿代码应该变动过,感觉有些参数像eof_retry_delay_in_ms参数及到达eof时的检查没有生效

@medcl
Copy link
Member

medcl commented Dec 20, 2024

你帮忙看一下索引文档的版本信息,如果是覆盖模式,版本会一直增加,如果是 Create 模式,重复消费会直接报错。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants