由于布尔列,Cassandra 在 TTL 过期后不会删除行

Cassandra is not deleting rows after TTL expires due to Boolean columns

table 我将 TTL 设置为 7 天,我希望 Cassandra 会在 7 天后删除这些行。

我的 table 包含布尔列,仅当在 table 上创建新行时才将列设置为 True。这些列永远不会更新为新值,因此这些列不会使用新的 TTL 值更改 TTL 值(因为 Cassandra 是面向列的数据库)。

但是,我注意到在 7 天后,所有列都设置为 NULL 值(如预期的那样被删除),除了布尔列仍然为 True,因此,这些行永远不会被删除。 检查了所有列的 TTL 值,它们具有 NULL 值,这意味着 TTL 已在所有列(包括布尔列)上过期。

当手动将布尔列设置为 NULL(7 天后)时,这些行将按预期立即删除。

我不明白为什么 Cassandra 在 TTL 过期后不将布尔列设置为 NULL,这样行将自动删除。 Cassandra 是否以不同的方式处理布尔列和 TTL 值?

合作对象:

解决方案:在 运行 nodetool flush 之后,问题已解决,当 TTL 过期时,行将被删除。

这真的很奇怪,但它正在运行,我可以看到行被立即删除。我找不到不删除 table 上过期行的原因,即使这些行已在 sstables 上标记为过期 (expires= true) .