oblogproxy 在批量交易情况下, client 调用 logProxyClient.stop() 卡主,oblogreader 停止不下来,日志提示 reader transfer queue full

【 使用环境 】测试环境
【 OB or 其他组件 】oblogproxy

【 使用版本 】

OceanBase 产品名称及详细版本 : OceanBase 4.2.1.7 (r107030032024062709-7d62d41478c39e4512cd694d1019a69dcc7efb63) (Built Jun 27 2024 10:10:49)

租户模式 : Oracle 模式

oblogproxy 版本: oblogproxy-2.3.6-20240205191717.tar.gz

【问题描述】
1 正常情况,小批量的事务交易,client 端调用 logProxyClient.stop() 后,oblogreader 可以停下来。
2 不正常情况,大批量交易过程中,client 端调用 logProxyClient.stop() 后卡主,oblogreader 停不了一直运行。

【复现路径】
可以模拟重现: 100列字段50万大事务

重现步骤,
1 新建一个表

CREATE TABLE ZYB_TEST_100COL (
ID NUMBER PRIMARY KEY,
COL001 VARCHAR2(255) ,
COL002 VARCHAR2(255) ,
COL003 VARCHAR2(255) ,
COL004 VARCHAR2(255) ,
COL005 VARCHAR2(255) ,
COL006 VARCHAR2(255) ,
COL007 VARCHAR2(255) ,
COL008 VARCHAR2(255) ,
COL009 VARCHAR2(255) ,
COL010 VARCHAR2(255) ,
COL011 VARCHAR2(255) ,
COL012 VARCHAR2(255) ,
COL013 VARCHAR2(255) ,
COL014 VARCHAR2(255) ,
COL015 VARCHAR2(255) ,
COL016 VARCHAR2(255) ,
COL017 VARCHAR2(255) ,
COL018 VARCHAR2(255) ,
COL019 VARCHAR2(255) ,
COL020 VARCHAR2(255) ,
COL021 VARCHAR2(255) ,
COL022 VARCHAR2(255) ,
COL023 VARCHAR2(255) ,
COL024 VARCHAR2(255) ,
COL025 VARCHAR2(255) ,
COL026 VARCHAR2(255) ,
COL027 VARCHAR2(255) ,
COL028 VARCHAR2(255) ,
COL029 VARCHAR2(255) ,
COL030 VARCHAR2(255) ,
COL031 VARCHAR2(255) ,
COL032 VARCHAR2(255) ,
COL033 VARCHAR2(255) ,
COL034 VARCHAR2(255) ,
COL035 VARCHAR2(255) ,
COL036 VARCHAR2(255) ,
COL037 VARCHAR2(255) ,
COL038 VARCHAR2(255) ,
COL039 VARCHAR2(255) ,
COL040 VARCHAR2(255) ,
COL041 VARCHAR2(255) ,
COL042 VARCHAR2(255) ,
COL043 VARCHAR2(255) ,
COL044 VARCHAR2(255) ,
COL045 VARCHAR2(255) ,
COL046 VARCHAR2(255) ,
COL047 VARCHAR2(255) ,
COL048 VARCHAR2(255) ,
COL049 VARCHAR2(255) ,
COL050 VARCHAR2(255) ,
COL051 VARCHAR2(255) ,
COL052 VARCHAR2(255) ,
COL053 VARCHAR2(255) ,
COL054 VARCHAR2(255) ,
COL055 VARCHAR2(255) ,
COL056 VARCHAR2(255) ,
COL057 VARCHAR2(255) ,
COL058 VARCHAR2(255) ,
COL059 VARCHAR2(255) ,
COL060 VARCHAR2(255) ,
COL061 VARCHAR2(255) ,
COL062 VARCHAR2(255) ,
COL063 VARCHAR2(255) ,
COL064 VARCHAR2(255) ,
COL065 VARCHAR2(255) ,
COL066 VARCHAR2(255) ,
COL067 VARCHAR2(255) ,
COL068 VARCHAR2(255) ,
COL069 VARCHAR2(255) ,
COL070 VARCHAR2(255) ,
COL071 VARCHAR2(255) ,
COL072 VARCHAR2(255) ,
COL073 VARCHAR2(255) ,
COL074 VARCHAR2(255) ,
COL075 VARCHAR2(255) ,
COL076 VARCHAR2(255) ,
COL077 VARCHAR2(255) ,
COL078 VARCHAR2(255) ,
COL079 VARCHAR2(255) ,
COL080 VARCHAR2(255) ,
COL081 VARCHAR2(255) ,
COL082 VARCHAR2(255) ,
COL083 VARCHAR2(255) ,
COL084 VARCHAR2(255) ,
COL085 VARCHAR2(255) ,
COL086 VARCHAR2(255) ,
COL087 VARCHAR2(255) ,
COL088 VARCHAR2(255) ,
COL089 VARCHAR2(255) ,
COL090 VARCHAR2(255) ,
COL091 VARCHAR2(255) ,
COL092 VARCHAR2(255) ,
COL093 VARCHAR2(255) ,
COL094 VARCHAR2(255) ,
COL095 VARCHAR2(255) ,
COL096 VARCHAR2(255) ,
COL097 VARCHAR2(255) ,
COL098 VARCHAR2(255) ,
COL099 VARCHAR2(255) ,
COL100 VARCHAR2(255)
);

2模拟大事务批量操作,50w条记录插入或50w条记录更新

begin
for i in 0…500000
loop
insert into ZYB_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 ZYB_TEST_100COL SET col001 = ‘u0402_50w_1’ WHERE rownum<500001;

3 等 client 处理过程中,触发停止
client 端调用 logProxyClient.stop() 卡主,

4 检查 oblogproxy,发现 oblogreader 停止不下来,日志提示 reader transfer queue full,oblogproxy 日志也没有client 停止日志

【附件及日志】

3 个赞

你好,你提的这个技术问题牵涉到OceanBase企业版范围内的功能细节。建议你通过以下方式寻求帮助:
1.如你所在的企业客户已签署OceanBase企业版销售合同,请你联系客户经理;
2.如你所在的企业客户尚未签署OceanBase企业版销售合同,你可通过OceanBase官网商务咨询页面留下你的联系方式,OceanBase企业版的业务顾问会在一个工作日内与你联系。
OceanBase官网商务咨询

https://www.oceanbase.com/contactus?fromPage=https%3A%2F%2Fwww.oceanbase.com%2Fsoftwarecenter-enterprise&dataSources=softwarecenter-enterprise_footercontact_d2022

3 个赞

你可以结合OCP的性能分析页面,看看数据库的等待事件和各项性能数据,client未响应有可能是未收到服务端的返回,有可能数据库在忙

2 个赞

ok。我在官方钉钉群已反馈,需要 oblogproxy 的开发支持,目前没有反馈,所以发在社区群问问

我使用开源版的 oblogproxy 编译后也是一样的问题
目前可以确认是 oblogproxy(oblogreader模块) 的问题

3 个赞

从目前问题日志的分析,应该是 oblogproxy 通讯模块的问题,和 obcdc 的关系不大,测试环境没有业务压力,可以这个复现问题,应该和 ob 数据库的等待或闲忙无关

3 个赞

如果有新版本换个试试

2 个赞

好好学习,总结经验 :clap: :clap: :clap:

2 个赞

传输队列满了啊