问题现象
OceanBase 数据库 V4.x 版本集群下,通过 OBProxy 连接 OceanBase 数据库集群执行 GET_LOCK 函数获取锁名,返回结果会根据租户所设置的 primary_zone 的不同而产生不同的结果。
当设置 primary_zone 为:zone1;zone2;zone3 时,执行失败。

observer.log 中关键日志信息如下。
observer.log.20250512163341903:[2025-05-12 16:31:47.755569] WDIAG [STORAGE.TABLELOCK] proxy_is_support (ob_lock_executor.cpp:343) [87376][T1010_L0_G0][T1010][xxxxx-xxxxx-xxxxx-xxxxx] [lt=15][errcode=-4007] proxy is not support this feature(session->get_sessid()=3222590475, session->is_feedback_proxy_info_support()=false, session->is_client_sessid_support()=true) observer.log.20250512163341903:[2025-05-12 16:31:47.755618] WDIAG [STORAGE.TABLELOCK] execute (ob_lock_func_executor.cpp:58) [87376][T1010_L0_G0][T1010][xxxxx-xxxxx-xxxxx-xxxxx] [lt=46][errcode=-4007] fail to check (proxy_is_support(ctx))(ret=-4007)当设置 primary_zone 为:zone1,zone2,zone3 时,则执行正常。

问题原因
该问题原因是 OBProxy 的参数设置不合理导致,当执行此类操作时,需要将 enable_single_leader_node_routing 设置为 false,逻辑如下: 较早版本的 OBProxy 设置 enable_single_leader_node_routing=true 时,OBProxy 会根据租户的副本位置来修改 OBProxy 到 OBServer 的协议,对于 primary_zone 集中的租户,OBProxy 使用 mysql 协议;对于 primary_zone 分散的租户,OBProxy 使用 OB2.0 协议,而此需要 OB2.0 协议的支持。所以当 zone1;zone2;zone3 时,observer.log 日志中出现 -4007 异常信息。
关键信息 关键日志: observer.log.20250512163341903:[2025-05-12 16:31:47.755569] WDIAG [STORAGE.TABLELOCK] proxy_is_support (ob_lock_executor.cpp:343) [87376][T1010_L0_G0][T1010][YB4219006DC8-0006339BEFC7069A-0-0] [lt=15][errcode=-4007] proxy is not support this feature(session->get_sessid()=3222590475, session->is_feedback_proxy_info_support()=false, session->is_client_sessid_support()=true) observer.log.20250512163341903:[2025-05-12 16:31:47.755618] WDIAG [STORAGE.TABLELOCK] execute (ob_lock_func_executor.cpp:58) [87376][T1010_L0_G0][T1010][YB4219006DC8-0006339BEFC7069A-0-0] [lt=46][errcode=-4007] fail to check (proxy_is_support(ctx))(ret=-4007)
问题的风险及影响
SQL 无法正常执行。
适用版本
OceanBase 数据库 V4.x 版本。
解决方法
将 OBProxy 的参数 enable_single_leader_node_routing 设置为 false 即可。
规避方式
OBProxy 后续版本已经默认将 enable_single_leader_node_routing 设置为 false,可以考虑将 OBProxy 升级到修复后的版本。