由于布尔列,TTL过期后,Cassandra没有删除行

时间:2019-08-14 08:47:05

标签: cassandra cassandra-3.0

有一个将TTL设置为7天的表,我希望Cassandra在7天后会删除行。

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

但是,我注意到在7天之后,所有列均设置为NULL值(预期将被删除),但布尔列保持为True,因此行从未被删除。 检查了所有列的TTL值,并且它们具有NULL值,这意味着TTL在包括布尔列的所有列上均已过期。

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

我不明白为什么TTL过期后Cassandra为何不将布尔列设置为NULL,所以行将被自动删除。 Cassandra是否使用布尔列和TTL值以其他方式工作?

使用:

  • Python 3.6和
  • 卡桑德拉3.11

1 个答案:

答案 0 :(得分:0)

解决方案:运行nodetool flush后,此问题已解决,并且TTL过期后,该行将被删除。

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