1

一些背景:

我有一个工作流应用程序(java ee.),其中有要执行的节点。PostgreSQL 9.1.2 与 Spring TX 管理一起使用。

节点在自己的事务中执行(必需,已提交读)。node-1(TX1) 将创建一个表 TB_NODE_1 将数据传递给下一个节点——node2。这是在 TX1 中完成的。

TX1 提交后,节点 2 将被触发执行(在 TX2 中)。node2 做的第一件事是读取 TB_NODE_1 作为其输入。

问题:

它发生了,主要是在重负载下(真正的 LARGE 查询同时命中 PostgreSQL),node2 抱怨:关系 TB_NODE_1 不存在

一些细节:

  1. 我使用“create table tb_node_1 as select * from table_foobar where ...”创建 TB_NODE_1。
  2. TX1 保证由 Spring TX 提交。
  3. 如果 TX1 回滚,PostgreSQL 将不会保留在 TX1 中创建的表。
  4. TX1 没有回滚(TX1 没有异常)。

似乎 PostgreSQL 给了我一个 TX1 已提交的假结果,但实际上它没有。

有人有同样的问题吗?

4

0 回答 0