Error number: MY-010037; Symbol: ER_DEBUG_SYNC_HIT; SQLSTATE: HY000
Message: Debug sync points hit: %s
错误说明
MY-010037 (ER_DEBUG_SYNC_HIT):硬拒绝了在debug sync对器之前的等待操作。
常见案例
这种错误往往会在尝试运行带有debug sync的SQL查询时发生,尤其是针对GDB等调试器的错误堆栈调查,这时会采用debug sync API 来阻止尝试查询的线程,并附带一个signal,便于进行调试。但是,如果在debug sync对器之前等待了很长时间,这时就会出现MY-010037 (ER_DEBUG_SYNC_HIT)错误。
解决方法
常见的解决方法包括:
1. 通过降低debug sync调用之前等待时间,将socket链接状态设置为NON_BLOCK 以在指定时间内触发错误,可解决此错误;
2. 在debug sync API调用之前清理资源;
3. 监视pending_job_queue 变量以查看是否有必要同步所有任务之前清理并发任务;
4. 如果在debug sync API调用之前,任务队列变得过于庞大,也可以启动定期清理任务的通用脚本;
5. 将debug sync API代码编译到最新版本MySQL,以解决等待时产生的此错误;
6. 调整MySQL后台任务的执行频率或者新的事件机制为更具有实时性的方式来执行任务,以避免等待时产生此错误。