问题现象
使用 ODC 执行UPDATE语句时,OBServer 报错 Unknown thread id。

问题原因
出现此类问题可能的查询链路为:ODC/驱动 > Nginx/F5 > 多个 OBProxy > OBServer。
ODC 中数据库连接的 SQL 查询超时时间为默认 60s,此 UPDATE 语句需要约 70 秒左右才能执行完成,所以会触发驱动层面判断语句超时,进而引发驱动层从 OBProxy 发送 kill query 至 OBServer。
由于驱动发送的 kill query id 为后端建立请求时返回的OBProxy Client connection id,该id维护在某台 OBProxy 内部,OBProxy 节点之间不共享。
ODC 通过 nginx/F5 地址访问后端的 OBProxy 集群时,接收到此 kill query 请求的 OBProxy 并非与 OceanBase 数据库建立连接的 OBProxy,无法找到该id,则会返回 unknown thread id 错误。
影响的版本
所有版本的桌面版和 Web 版 ODC。
解决方法
ODC V4.1.0 之前版本
增大 ODC 连接配置中的 SQL 查询超时时间 ,避免驱动层超时引发的 kill 动作。

ODC V4.1.0 及之后版本
通过会话变量
ob_query_timeout设置查询超时时间。