Postgres 错误:subplan "SubPlan 2" 未初始化

有一位用户反映,他在查看随机帖子时遇到了 500 错误。查看日志后,我只看到了这些错误,而且似乎仅影响该用户。这是一个标准的安装版本,已更新至 PG13。我没有在其他任何用户身上看到这些错误。这些错误似乎都与 private_messages 有关,但这看起来并不像是“随机帖子”。搜索该错误后,我发现一年前有几个帖子声称这是一个 Postgres 错误

Discourse 2.8.0.beta6 - https://github.com/discourse/discourse 版本 f513266bcbc03eedebda17695b8a7ffbcad6ebcc

Started GET "/u/joe/private-message-topic-tracking-state" for 82.71.0.62 at 2021-10-07 07:08:25 +0000
Processing by UsersController#private_message_topic_tracking_state as JSON
  Parameters: {"username"=>"joe"}
Completed 500 Internal Server Error in 70ms (ActiveRecord: 0.0ms | Allocations: 1952)
PG::InternalError (ERROR:  subplan "SubPlan 2" was not initialized
CONTEXT:  parallel worker
)
1 个赞

这确实是一个 PostgreSQL 的漏洞,已在最近的次要版本中得到解决。您能否执行重建操作?这将把 PostgreSQL 更新到最新的次要版本。

3 个赞

哦。所以

root@community:~# docker exec -it data bash -c 'psql --version'
psql (PostgreSQL) 13.1 (Debian 13.1-1.pgdg100+1)

重建后:

# docker exec -it data bash -c 'psql --version'
psql (PostgreSQL) 13.3 (Debian 13.3-1.pgdg100+1)

这在某些发布说明中提到过吗?哦。看起来至少从 8 月就发生了。

我有一些网站需要更新。

谢谢,Rafael!

2 个赞

趁此机会,您是否建议在进行此次要版本升级时执行真空(VACUUM)和并发索引重建?我在升级到主版本 13 时会这样做。对此次要版本升级执行此操作是多余的吗、并非坏主意,还是完全没必要?

通常不需要这样做,因为次要版本兼容相同的磁盘文件格式。

2 个赞