[Bug]: oblogproxy 在批量交易情况下, client 调用 logProxyClient.stop() 卡主,oblogreader 停止不下来,日志提示 reader transfer queue full
Describe the bug
1 正常情况,小批量的事务交易,client 端调用 logProxyClient.stop() 后,oblogreader 可以停下来。 2 不正常情况,大批量交易过程中,client 端调用 logProxyClient.stop() 后卡主,oblogreader 停不了一直运行。
Environment
oblogproxy 版本:oceanbase/oblogproxy v2 分支编译 oceanbase: ob4
Fast reproduce steps
可以模拟重现: 100列字段50万大事务
重现步骤, 1 新建一个表
CREATE TABLE TEST_100COL ( ID NUMBER PRIMARY KEY, COL001 VARCHAR(255) , COL002 VARCHAR(255) , COL003 VARCHAR(255) , COL004 VARCHAR(255) , COL005 VARCHAR(255) , COL006 VARCHAR(255) , COL007 VARCHAR(255) , COL008 VARCHAR(255) , COL009 VARCHAR(255) , COL010 VARCHAR(255) , COL011 VARCHAR(255) , COL012 VARCHAR(255) , COL013 VARCHAR(255) , COL014 VARCHAR(255) , COL015 VARCHAR(255) , COL016 VARCHAR(255) , COL017 VARCHAR(255) , COL018 VARCHAR(255) , COL019 VARCHAR(255) , COL020 VARCHAR(255) , COL021 VARCHAR(255) , COL022 VARCHAR(255) , COL023 VARCHAR(255) , COL024 VARCHAR(255) , COL025 VARCHAR(255) , COL026 VARCHAR(255) , COL027 VARCHAR(255) , COL028 VARCHAR(255) , COL029 VARCHAR(255) , COL030 VARCHAR(255) , COL031 VARCHAR(255) , COL032 VARCHAR(255) , COL033 VARCHAR(255) , COL034 VARCHAR(255) , COL035 VARCHAR(255) , COL036 VARCHAR(255) , COL037 VARCHAR(255) , COL038 VARCHAR(255) , COL039 VARCHAR(255) , COL040 VARCHAR(255) , COL041 VARCHAR(255) , COL042 VARCHAR(255) , COL043 VARCHAR(255) , COL044 VARCHAR(255) , COL045 VARCHAR(255) , COL046 VARCHAR(255) , COL047 VARCHAR(255) , COL048 VARCHAR(255) , COL049 VARCHAR(255) , COL050 VARCHAR(255) , COL051 VARCHAR(255) , COL052 VARCHAR(255) , COL053 VARCHAR(255) , COL054 VARCHAR(255) , COL055 VARCHAR(255) , COL056 VARCHAR(255) , COL057 VARCHAR(255) , COL058 VARCHAR(255) , COL059 VARCHAR(255) , COL060 VARCHAR(255) , COL061 VARCHAR(255) , COL062 VARCHAR(255) , COL063 VARCHAR(255) , COL064 VARCHAR(255) , COL065 VARCHAR(255) , COL066 VARCHAR(255) , COL067 VARCHAR(255) , COL068 VARCHAR(255) , COL069 VARCHAR(255) , COL070 VARCHAR(255) , COL071 VARCHAR(255) , COL072 VARCHAR(255) , COL073 VARCHAR(255) , COL074 VARCHAR(255) , COL075 VARCHAR(255) , COL076 VARCHAR(255) , COL077 VARCHAR(255) , COL078 VARCHAR(255) , COL079 VARCHAR(255) , COL080 VARCHAR(255) , COL081 VARCHAR(255) , COL082 VARCHAR(255) , COL083 VARCHAR(255) , COL084 VARCHAR(255) , COL085 VARCHAR(255) , COL086 VARCHAR(255) , COL087 VARCHAR(255) , COL088 VARCHAR(255) , COL089 VARCHAR(255) , COL090 VARCHAR(255) , COL091 VARCHAR(255) , COL092 VARCHAR(255) , COL093 VARCHAR(255) , COL094 VARCHAR(255) , COL095 VARCHAR(255) , COL096 VARCHAR(255) , COL097 VARCHAR(255) , COL098 VARCHAR(255) , COL099 VARCHAR(255) , COL100 VARCHAR(255) );
2模拟大事务批量操作,50w条记录插入或50w条记录更新
begin for i in 0..500000 loop insert into TEST_100COL values(i, 'a1','a2','a3','a4','a5','a6','a7','a8','a9','a10','a11','a12','a13','a14','a15','a16','a17','a18','a19','a20','a21','a22','a23','a24','a25','a26','a27','a28','a29','a30','a31','a32','a33','a34','a35','a36','a37','a38','a39','a40','a41','a42','a43','a44','a45','a46','a47','a48','a49','a50','a51','a52','a53','a54','a55','a56','a57','a58','a59','a60','a61','a62','a63','a64','a65','a66','a67','a68','a69','a70','a71','a72','a73','a74','a75','a76','a77','a78','a79','a80','a81','a82','a83','a84','a85','a86','a87','a88','a89','a90','a91','a92','a93','a94','a95','a96','a97','a98','a99','a99'); end loop; commit; end;
UPDATE TEST_100COL SET col001 = 'u0402_50w_1' WHERE rownum<500001;
3 等 client 处理过程中,触发停止 client 端调用 logProxyClient.stop() 卡主,
4 检查 oblogproxy,发现 oblogreader 停止不下来,日志提示 reader transfer queue full,oblogproxy 日志也没有client 停止日志
Expected behavior
client 段处理过程中,触发停止(调用 logProxyClient.stop()) 正常停止,不卡主,另外 logproxy 服务侧,oblogreader 正常停止
Actual behavior
client 段处理过程中,触发停止(调用 logProxyClient.stop()) 卡主,停不下来,另外 logproxy 服务侧,oblogreader 不停止一直运行,日志提示 reader transfer queue full
Additional context
No response