我的问题是我没有在单节点 Cassandra 上立即删除。 当我在 Docker 容器中运行 Cassandra 时,该问题仅出现在 Windows 上。 Linux上没有问题。我正在使用 datastax 驱动程序从 Java 应用程序连接到 Cassandra。 测试流程如下:
我尝试了多种方法来找出原因:
所以我怀疑这是由于Windows内核对某些操作的工作方式存在差异造成的。我们在内部对此进行了讨论(在 DataStax),一个想法是 LWT INSERT 可能存在竞争条件,导致 DELETE 可能在 INSERT 生效之前发生。这在 Windows 上会更加明显。
底线:我们停止在 Windows 上支持 Cassandra,因为 Windows 做了一些妨碍 Cassandra 正常运行的事情(删除活动文件句柄的问题)。要测试 Cassandra 单节点样式,请改用 Linux 或 MacOS、WSL 或容器化/虚拟化平台。