我们通过清理cronjob和riak发生了一些奇怪的事情:
我们存储的对象(邮箱)具有2i用于修改日期(这是一个unix时间戳)。 有一个cronjob运行频繁删除所有未在180天内修改的邮箱。然而,我们发现有证据表明这个cronjob删除了过去三天内修改过的一些(非常少)邮箱的邮箱。 在对每行代码进行多次检查和调试之后,我有信心,这不是cronjob的问题。
这给我留下了两个可能的原因:
所以我的问题是:
干杯, 的Matthias
答案 0 :(得分:1)
Riak中的二级索引查询是覆盖查询,这意味着它们将仅使用一个存储的副本,而不执行仲裁读取。
当您使用w = QUORUM进行编写时,如果将n_val设置为3或更高,则可能无法更新一个(或多个)副本,同时操作仍被视为成功。如果这是为覆盖查询选择的那个,则最终可能会根据旧值进行删除。为了避免这种情况,您需要使用w = ALL执行更新。