0

アプリケーションを spring boot 2.2.6 から 2.3.6 に移行しようとしています。この更新により、spring-data-couchbase 3.2.6 も 4.0.2 に更新されます。以前のバージョンでは OptimisticLockingFailureException がスローされていましたが、このアップグレードでは例外がスローされることはありません。永続化する直前にデバッガーを使用して実行を停止し、couchbase UI でデータを手動で変更して実行を続けています。spring-data-couchbase 3.2.6 では例外がスローされますが、4.0.2 ではスローされません

spring-data-couchbase 3.2.6

CouchbaseConfiguration.java

@Configuration
@EnableCouchbaseRepositories
public class CouchbaseConfiguration extends AbstractCouchbaseConfiguration {

    @Value("${couchbase.cluster.bucketName}")
    private String bucketName;

    @Value("${couchbase.cluster.ip}")
    private String ip;

    @Value("${couchbase.cluster.password}")
    private String password;

    @Override
    protected String getBucketName() {
        return bucketName;
    }

    @Override
    protected String getBucketPassword() {
        return this.password;
    }

    @Override
    protected List<String> getBootstrapHosts() {
        return Arrays.asList(ip);
    }

    @Bean(name = BeanNames.COUCHBASE_TEMPLATE)
    @Override
    public CouchbaseTemplate couchbaseTemplate() throws Exception {

        final CouchbaseTemplate template = super.couchbaseTemplate();
        template.setWriteResultChecking(WriteResultChecking.EXCEPTION);
        return template;
    }

    @Override
    protected Consistency getDefaultConsistency() {
        return Consistency.READ_YOUR_OWN_WRITES;
    }

PersistenceSnippet.java

    entity = repository.findById(id)
    try {
      return Optional.of(repository.save(entity)); // stop execution here in debugger
    } catch (OptimisticLockingFailureException e) {
      log.warn("failed to persist optimistically");
      return Optional.empty();
    }

spring-data-couchbase 4.0.2

CouchbaseConfiguration.java

@Configuration
@EnableCouchbaseRepositories
public class CouchbaseConfiguration extends AbstractCouchbaseConfiguration {
    @Value("${couchbase.cluster.bucketName}")
    private String bucketName;

    @Value("${couchbase.cluster.ip}")
    private String ip;

    @Value("${couchbase.cluster.password}")
    private String password;

    @Value("${couchbase.durability:lenient}")
    private String durability;

    @Override
    public String getConnectionString() {
        return ip;
    }

    @Override
    public String getUserName() {
        return bucketName;
    }

    @Override
    public String getPassword() {
        return password;
    }

    @Override
    public String getBucketName() {
        return bucketName;
    }

template.setWriteResultChecking(WriteResultChecking.EXCEPTION);の違いによるものでしょうか。? しかし、4.0.2 の couchbase テンプレートにはそのようなメソッドがありません。OptimisicLockingFailureExpception をスローできるようにするために 4.0.2 で不足している構成はありますか? 私のエンティティオブジェクトには注釈が@Version long version;あります@Document

4

0 に答える 0