我最近遇到一个奇怪的错误,我不太明白可能导致它的原因:
caused by org.postgresql.util.PSQLException: ERROR: canceling statement due to conflict with recovery Detail: User was holding shared buffer pin for too long
。
我为每个查询设置了 10 秒的固定超时,因此任何长时间运行的查询都应该终止,并且出现我期望看到的错误消息User query get cancelled by user request
。然而,我有时会看到这一点,但上面的内容也确实令人困惑。此外,只有当我看到 RDS 副本存在高延迟时,它才会出现,然后在 5、10 分钟后自行解决。
我尝试在本地重现这个问题,但没有成功。任何想法将不胜感激!