Параллельные обновления одного и того же документа Couchbase теряются - PullRequest
0 голосов
/ 26 мая 2020

Я использовал следующие зависимости с весенней загрузкой:

<dependency>
    <artifactId>spring-data-couchbase</artifactId>
    <groupId>org.springframework.data</groupId>
    <version>3.2.3.RELEASE</version>
</dependency>
<dependency>
    <artifactId>joda-time</artifactId>
    <groupId>joda-time</groupId>
    <version>2.9.6</version>
</dependency>

Но когда я одновременно обновляю документ Couchbase, некоторые обновления теряются при обновлении.

Допустим, я инициировал три потока для обновления одного и того же документа couchbase, тогда иногда есть все три обновления, а иногда только два обновления в документе

Определение сущности:

public class AuditData
{
    @Version
    private long version;

    @Field
    @NotNull
    Map<String, Object> data;

    @Field
    Map<String, Object> response;

    @Id
    private String id;
    @Field
    @NotNull
    private DateTime created;

    @Field
    private DateTime updated;
}

Код, который выполняет каждый поток для обновления одной и той же couchbase do c:

AuditDataDto auditDataDto = auditDataService.findById(requestDataId); // Read the Data
Map<String, Object> responseMap = auditDataDto.getResponse();
LOG.info("Response Fetched is  " + responseMap);
responseMap.putAll(qdeDataToSave);
auditDataService.update(auditDataDto); //Update the Data

Пожалуйста, предложите какое-нибудь решение Для этого я использую шаблон Spring Couchbase для связи с DB

...