我想使用Achilles更新Cassandra中对象的TTL;但如果该对象不存在,则应抛出异常。我想在Cassandra的一次操作中使用LWT。
我尝试了以下
DO do = asyncManager.forUpdate(DO.class, "not found");
OptionsBuilder.BuiltOptions options = OptionsBuilder.withTtl(5);
options.ifEqualCondition(MappingDO.TYPE_FIELD, "0");
try {
asyncManager.update(do, options).get(2, TimeUnit.SECONDS);
}
catch (InterruptedException | ExecutionException | TimeoutException e) {
// An LWT exception should be caught here since the object does not exist
}
由于对象不存在;我希望条件更新失败。但相反,操作不会失败。
答案 0 :(得分:0)
为了使条件更新起作用;必须更新列。
在对象'do'上,必须至少指定密钥旁边的其他一个属性。该值不必与已存在的值不同。