暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

SQL执行hang住,状态为wait_wal_sync,且无法terminate

原创 qi_yu 2024-08-16
141

发现版本

openGauss 3.0.5及以前

问题概述

SQL执行hang住,查看该会话状态为wait_wal_sync,使用pg_terminate_backend和pg_terminate_active_session_socket均无法杀掉,如图
image.png

排查步骤

  1. 调整synchronous_standby_names=local
  2. 调整most_available_sync=on
  3. 尝试重启发现数据库停不掉

临时解决方案

kill掉数据库进程后,重新拉起,会话消失
建议:先尝试重启数据库,若无法正常停止数据库,再尝试kill掉数据库进程

问题原因

walsender线程在运行SetXactLastCommitToSyncedStandby()函数时,可能会发生FATAL报错,导致当前walsender线程退出,退出时有可能已经通过pHead和pTail的倒换修改了,全局数据中的等待线程信息。

这样下一次walsender重启后,就无法再通知到walsender线程崩溃时误移除的线程,因此这些业务线程就处于永远等待的状态。

版本修复

相关pr:https://gitee.com/opengauss/openGauss-server/pulls/5716
预计930合入

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论