问题现象
出问题的节点会出现大量如下日志:
[2023-03-09 02:38:59.624747] ERROR ussl-loop.c:312 [54324] dispatch_accept_fd_to_certain_group [ussl_debug] write to pipe failed, pipefd:-1, fd:3611, errno:9 [2023-03-09 02:38:59.624750] ERROR handle-event.c:343 [54324] remove_from_epoll_and_dispatch [ussl_debug] dispatch fd to default group failed, fd:3611, ret:-5出问题的节点无法再
accept RPC连接。发到该节点上的RPC均会失败。使用nc等工具连接该节点也会失败。
问题原因
并发问题。RPC 认证模块,ussl_loop_redirect_listen_fd 函数中有段逻辑本应该是原子的,但原子性却没有得到保证。
问题的风险及影响
- 如果在重启时触发,会导致 OBServer 无法启动。
- 如果在 OBServer 运行过程中触发,会导致节点无法
accept RPC连接,网络不可用。
影响版本
OceanBase 数据库 V2.2.77 BP15(oceanbase-2.2.77-115000012023010607)、V2.2.77 BP16(oceanbase-2.2.77-116000022023021412) 及其 Hotfix 版本。
解决问题及规避方式
- 重启节点做应急处理。
- 升级到问题已修复版本,目前已修复 OceanBase 数据库 V2.2.77 BP17(oceanbase-2.2.77-117000112023051914) 版本。