首批通过分布式安全可靠测评,为关键业务系统打造
出现悬挂事务,并且日志伴随 4013 报错
更新时间:2026-06-10 09:51
问题现象
集群中出现悬挂事务。
问题原因
事务在提交日志过程中遇到 4013 内存爆,导致事务提交流程无法退出,也不会重试提交日志导致出现悬挂事务。
关键信息
从以下悬挂事务的 WARN 日志可以看出,其在进行事务 2 阶段 prepare 请求的时候出现失败告警,且伴随 4013 报错。
observer.log.20240617100339:[2024-06-17 10:03:27.780679]
WARN [STORAGE.TRANS] handle_batch_msg (ob_trans_service.cpp:3649) [103117][0][YB420A6805E9-0006175756BC83E2-0-0] [lt=32] [dc=0] handle 2pc prepare request failed(ret=-4013, *msg={scheduler:"xxx.xxx.xxx.xxx:xxxx", coordinator:{tid:1102810162710888, partition_id:0, part_cnt:0}, participants:[{tid:1102810162710888, partition_id:0, part_cnt:0}], request_id:1718589807779962, status:0, stc:{mts:1718589807774554}, partition_log_info_arr:[], batch_same_leader_partitions:[], app_trace_info:"", xid:{gtrid_str:"", bqual_str:"", format_id:1, gtrid_str_.ptr():"data_size:0, data:", bqual_str_.ptr():"data_size:0, data:"}, is_xa_prepare:false})
问题的风险及影响
出现悬挂事务会导致 CPU 升高等一系列影响。
影响租户
影响 OceanBase 数据库中的 SYS 租户和 Oracle 租户以及 MySQL 租户。
适用版本
OceanBase 数据库 V3.2.x 版本。
解决方法及规避方式
解决方法:
升级至问题已修复版本。目前已修复的版本 OceanBase 数据库 V3.2.3 BP11(oceanbase-3.2.3.3-111000032024070822)版本。
通过重启 OBServer 或将对应 partition 的主切走,刷新悬挂的事务的状态。
规避方式
定期重启 server。