对“只需更改您的程序”的良好回应是什么?如果 ORA-02049 包含在分布式事务中?

发布于 2025-01-01 18:28:15 字数 505 浏览 1 评论 0原文

我有一个分布式事务,其中包含另外 3 个事务。其中一个内部事务失败,并显示 ORA-02049。阴险的是,外部事务和其他事务都很好,因为事务管理器首先从所有 3 个事务中得知它们将成功。一项事务因 ORA-02049 失败并被正确回滚。但总的来说,系统处于不一致的状态,因为系统期望所有事务都能完成。

数据库不在我们的控制之下,我们必须使用它。我们的客户使用了一些愚蠢的非 Oracle 复制软件,该软件首先对错误负责。

在我看来,期望我们以自动处理此类错误情况的方式设计系统是不合理的!对于这样的要求你会如何回应?

如果事务管理器说它将提交,那么我们期望事务管理器实际上会完成提交,这是我们的错吗?

您将如何解决这样的问题 - 我们的整个软件期望数据库完美运行 - 这是一个错误的假设吗?

I have a distributed transaction which wraps lets say 3 others. One of those inner transactions fails with ORA-02049. The insidious thing is, the outer transaction and the others are fine, because the transaction manager first got from all 3 transactions that they will succeed. The one transaction fails with ORA-02049 and is correctly rolled back. But in the whole the system is in an inconsistent state because the system expects all transactions to go through.

The database is not under our control, we have to use it. Our client uses some stupid non Oracle replication software which is responsible for the error in the first place.

In my opinion it is not reasonable to expect from us to design the system in a way that it handles such error cases automatically! How would you respond to such a request?

Is it our fault to expect from a transaction manager if it says it will commit, that the commit will actually go through?

How would you approach such a problem - our whole software expects that the database works flawlessly - is this a faulty assumption?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

海风掠过北极光 2025-01-08 18:28:15

我会让客户向第三方软件供应商提出错误。我会向客户表明,这个问题是由他们的系统中的错误引起的。然后我会表明他们有一个选择,要么等待第三方的错误修复,要么支付变更请求费用,以便您的软件代码围绕它。

当然,如果你真的让他们支付 CR 费用,这取决于你和公司关系等,但要明确这是额外的工作而不是你的错。

I would have the customer raise a bug with the third party software vendor. I would lay out to the client that the issue is caused by a bug in, what effectivly, their system. I would then indicate that they have a choice, either wait for a bug fix from the third party, or pay for a Change Request so that your software codes round it.

It is of course up to you and the company relationships etc if you actually make them pay for the CR, but make it clear that it is extra work and not your fault.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文