0

我正在尝试 Apache Ignite 并使用示例。我从截屏视频中举了一个关于交易的例子。启动 3 个服务器节点,并启动开始事务并将 50k 元素放入缓存的代码。当它运行时,我杀死了 3 个节点中的 2 个。我希望 Ignite 提交失败并出现错误,但实际上没有任何错误,并且我得到了部分保存的数据。如手册中所述,它不是完全的 ACID 事务。可能是我不明白一些重要的事情吗?

4

1 回答 1

2

事务是线程本地的。这意味着要将缓存操作登记到事务中,它必须由启动事务的同一线程执行。提交或回滚也必须在这个线程中发生。

在您的示例中,您启动了新线程来执行更新,因此它们没有被登记。本质上,每个操作都在一个单独的隐式事务中执行,这会导致您观察到的行为。

于 2016-01-23T06:52:26.350 回答