首页 > 解决方案 > 即使在 NoHostAvailableException 之后创建的文档

问题描述

我正在尝试与 Java 的 ExecutorService 并行执行多个 BatchSatements。我想知道我的查询是否成功执行。

我经历过: 如何在 Cassandra Datastax 中查看更新查询是否成功

它是说,如果没有例外,我们可以认为它是成功的。但我得到了 NoHostAvailableException。

All host(s) tried for query failed (tried: *********************(com.datastax.driver.core.exceptions.OperationTimedOutException: [******************] Timed out waiting for server response))

但我可以在 Cassandra 中看到我的数据。我想知道如何知道我的文档是否在 Cassandra 中成功创建。有什么办法吗?

标签: javaexceptioncassandradatastaxdatastax-java-driver

解决方案


与关系数据库相比,Cassandra 中的批次不同。并且它们应该只在有限数量的用例中使用,并且它们不应该用于批量插入/更新到多个分区,直到确实有必要(请参阅“ misuse of batches ”文档)。

批处理最终将被重播,即使您将错误返回给驱动程序 - 这是因为批处理在执行之前被复制到其他节点。详情见下图


推荐阅读