由于布尔列的原因,cassandra不会在ttl过期后删除行

ggazkfy8  于 2021-06-14  发布在  Cassandra
关注(0)|答案(1)|浏览(314)

有一个表,我将ttl设置为7天,我希望cassandra会在7天后删除这些行。
我的表包含布尔列,只有在表上创建新行时才将该列设置为true。列永远不会更新为新值,因此这些列不会用新的ttl值更改ttl值(因为cassandra是面向列的数据库)。
但是,我注意到,7天后,所有列都被设置为空值(正如预期的那样被删除),布尔列除外,布尔列保持为真,因此,行永远不会被删除。检查了所有列的ttl值,它们的值为空,这意味着所有列(包括布尔列)的ttl都已过期。
当手动将布尔列设置为null(7天后)时,将立即按预期删除行。
我不明白为什么cassandra没有在ttl过期后将布尔列设置为null,这样行就会自动删除。cassandra是否以不同的方式处理布尔列和ttl值?
使用:
python 3.6和
Cassandra3.11

qgzx9mmu

qgzx9mmu1#

解决方案:运行后 nodetool flush ,问题已修复,当ttl过期时,行将被删除。
这真的很奇怪,但它是工作,我可以看到行被立即删除。我找不到不删除表中过期行的原因,即使这些行在sstables上被标记为过期(expires=true)。

相关问题