我们在清理 cronjob 和 riak 时发生了一些奇怪的事情:
我们存储的对象(邮箱)有一个 2i 用于修改日期(这是一个 unix 时间戳)。有一个 cronjob 经常运行删除所有在 180 天内未修改的邮箱。但是,我们发现有证据表明,过去三天内修改过的一些(非常少)邮箱被此 cronjob 删除了。在对每一行代码进行多次审查和调试之后,我确信这不是 cronjob 的问题。
- 我还追溯了对该存储桶的所有删除调用 - 没有其他人正在删除那里的对象。
- 当然,我还检查了 Riak 以读取带有 r=ALL 的邮箱:它们肯定已经消失了。(并且它们与 w=QUORUM 一起存储)
- 我还检查了日志:更新邮箱确实成功(写操作没有报告错误)
这给我留下了两个可能的原因:
- riak 丢失数据(我不愿意轻易相信)
- 二级索引已损坏,对它们的查询返回错误的键
所以我的问题是:
- 2is真的可以打破吗?
- 可以验证吗?
- 我错过了一些完全不同的东西吗?
干杯,马蒂亚斯