首批通过分布式安全可靠测评,为关键业务系统打造
线程析构时线程局部缓存 ObDecoderCtxArray 内存泄漏
更新时间:2026-05-08 08:11
问题现象
线程析构时,线程局部缓存 ObDecoderCtxArray 内存泄漏。
若是 obguard 内存报警,且占用较大的是 OB_COMMON_ARRAY,启动 memleak checker 抓取堆栈,找到 oceanbase::blocksstable::ObDecoderCtxArray::get_ctx_array(long) ./build_release/src/storage/./src/storage/blocksstable/encoding/ob_micro_block_decoder.cpp:110,就是此问题导致。
问题原因
ObTLDecoderCtxArray 析构时,内部的 ObDecoderCtxArray 的 ObArray 内存没有释放掉。
问题的风险及影响
500 租户内存泄漏。
影响租户
影响 OceanBase 数据库中的 SYS 租户,对于 Oracle 租户和 MySQL 租户无影响。
影响版本
OceanBase 数据库企业版 V3.1.2 GA(oceanbase-3.1.2-20210618150922)及之后版本、V3.2.3 GA(oceanbase-3.2.3.0-20220418212020)及之后版本、V3.2.4 GA(oceanbase-3.2.4.0-100000072022102819)及之后版本。
解决方法及规避方式
重启。
升级到问题已修复版本,目前已修复 OceanBase 数据库企业版 V3.2.3 BP9(oceanbase-3.2.3.3-109000182023071410)及之后版本、V3.2.4 BP4(oceanbase-3.2.4.4-104000052023062021)及之后版本。