updateFirst 方法并不总是保存对象

updateFirst method not always saving the object

updateFirst Spring 方法 Mongo 模板并不总是按预期更新 mongo Db 集合。

(更新请求是由前端 ui 中的保存按钮触发的,我们看到在按下保存按钮并完成请求后,会出现一条 toast 消息,说明 table 已成功保存)

当几个更新请求一个接一个地按顺序触发且更新之间没有间隙时,在几次请求之后我可以看到数据不再更新但日志中没有错误。

下面是更新数据库的方法。

@Override
public void updateTable(Source source, Table table) {
    log.debug("updating existing table " + table.getTableId() + " on source " + source.getSourceId());
    source.setStatus(SourceStatus.InProcess);
    Query q = query(where("_id").is(source.getId()).and("deleted").is(false).and("tables._id").is(table.getId()));
    Update u = update("tables.$", table);
    u.set("lastModifiedAt", source.getLastModifiedAt()).set("lastModifiedBy",
            source.getLastModifiedBy()).set("errorInObject", source.isErrorInObject()).set(
            "errorInChildObject", source.isErrorInChildObject()).set("errors", source.getErrors()).set(
            "failedFields", source.getFailedFields()).set("status",source.getStatus());
    template.updateFirst(q, u, Source.class);
}

我已经记录了使用属性文件参数在 spring 引导应用程序上触发到 Mongo Db 的查询,并且始终更新被触发的查询具有正确的值,但是

更新工作时 -- 在触发更新查询之前,有一条日志消息显示 "Saving object to database"。

当更新不起作用时 - 有一条日志消息说 "Saving object to database" 就在更新查询被触发后,我认为它在前一个写入数据库更新而不是当前更新。

Mongo数据库版本 -- 2.6.7

Spring Mongo 模板驱动程序版本 -- 2.13.3

Spring 引导版本 -- v1.3.2.RELEASE

如果需要,可以提供更多信息。

我试图深入研究这个问题,发现问题是在我向 Db 发送更新命令时出现的,它们之间没有间隙,这在某种程度上扰乱了 MongoDb 的队列来处理更新和一些更新被覆盖了。

所以我在调用 updateFirst 方法之前为每个更新请求添加了 500 毫秒的延迟,这解决了这个问题,现在更新一直被保留,即使更新请求非常频繁,也有足够的时间来处理更新.