我大约有30个实例正在运行并向dynamo提交数据,但是在我的日志中,我收到了大量的ConditionalCheckFailedException
故障消息。奇怪的是,我没有保存任何条件检查,除非我遗漏了一些东西:
private void save(DynamoObject myObject) {
try {
mapper.save(model);
} catch (ConditionalCheckFailedException e) {
// metrics and logging
} catch (Exception e) {
// metrics and logging
}
是什么原因造成的?
最佳答案
看来您在某处使用DynamoDBMapper,特别是@DynamoDBVersionAttribute
,并且放置项的失败与映射器的optimistic locking策略有关。服务器上的物料版本与客户端上的物料版本不同,这是因为对该物料的另一次写入,因此DynamoDB拒绝放置该物料。
您需要在客户端协调项目差异并重新提交。