Cocuhbase connecting two bucket throw RunTimeException during CRUD operation

Hi All,

I have the use case of connecting with two different bucket, But I am getting Runtime error with some warning when my spring boot application perform CRUD operation. I am not getting the exact root cause. I would really appreciate your quick response.

Info logs message:

— [parallel-9] s.d.c.c.ReactiveCouchbaseTemplateSupport : maybeCallBeforeConvert called, but ReactiveCouchbaseTemplate not initialized with applicationContext
— [parallel-9] s.d.c.c.ReactiveCouchbaseTemplateSupport : maybeCallAfterConvert called, but ReactiveCouchbaseTemplate not initialized with applicationContext
— [parallel-9] s.d.c.c.ReactiveCouchbaseTemplateSupport : maybeEmitEvent called, but ReactiveCouchbaseTemplate not initialized with applicationContext

Error during run time:

Caused by: java.lang.IllegalStateException: No MethodInvocation found: Check that an AOP invocation is in progress, and that the CrudMethodMetadataPopulatingMethodInterceptor is upfront in the interceptor chain.
at org.springframework.data.couchbase.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.currentInvocation(CrudMethodMetadataPostProcessor.java:125)
at org.springframework.data.couchbase.repository.support.CrudMethodMetadataPostProcessor$ThreadBoundTargetSource.getTarget(CrudMethodMetadataPostProcessor.java:273)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:195)
at com.sun.proxy.$Proxy125.getScope(Unknown Source)
at org.springframework.data.couchbase.repository.support.CouchbaseRepositoryBase.getScope(CouchbaseRepositoryBase.java:74)
at org.springframework.data.couchbase.repository.support.SimpleReactiveCouchbaseRepository.save(SimpleReactiveCouchbaseRepository.java:94)
at org.springframework.data.couchbase.repository.support.SimpleReactiveCouchbaseRepository.lambda$saveAll$0(SimpleReactiveCouchbaseRepository.java:108)
at reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:386)
at reactor.core.publisher.FluxIterable$IterableSubscription.slowPath(FluxIterable.java:272)
at reactor.core.publisher.FluxIterable$IterableSubscription.request(FluxIterable.java:230)
at reactor.core.publisher.FluxFlatMap$FlatMapMain.onSubscribe(FluxFlatMap.java:371)
at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:165)
at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:87)
at reactor.core.publisher.Flux.subscribe(Flux.java:8469)
at reactor.core.publisher.FluxUsingWhen.subscribe(FluxUsingWhen.java:94)
at reactor.core.publisher.FluxRetryWhen$RetryWhenMainSubscriber.resubscribe(FluxRetryWhen.java:216)
at reactor.core.publisher.FluxRetryWhen$RetryWhenOtherSubscriber.onNext(FluxRetryWhen.java:269)
at org.springframework.cloud.sleuth.instrument.reactor.ScopePassingSpanSubscriber.onNext(ScopePassingSpanSubscriber.java:89)
at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.innerNext(FluxConcatMap.java:282)
at reactor.core.publisher.FluxConcatMap$ConcatMapInner.onNext(FluxConcatMap.java:863)
at org.springframework.cloud.sleuth.instrument.reactor.ScopePassingSpanSubscriber.onNext(ScopePassingSpanSubscriber.java:89)
at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1816)
… 22 common frames omitted

My Couchbase mapping configuration:


@Override
  public void configureReactiveRepositoryOperationsMapping(final ReactiveRepositoryOperationsMapping baseMapping) {
      try {
          ReactiveCouchbaseTemplate primaryTemplate = myReactiveCouchbaseTemplate(couchbaseClientFactory(),
              (MappingCouchbaseConverter) (baseMapping.getDefault().getConverter()));
          baseMapping.map(Repository1.class, primaryTemplate);
          

          ReactiveCouchbaseTemplate secondaryTemplate = myReactiveCouchbaseTemplate(couchbaseClientFactorySecondary(),
              (MappingCouchbaseConverter) (baseMapping.getDefault().getConverter()));
          baseMapping.map(Repository2.class, secondaryTemplate);
          

      } catch (Exception e) {
          log.error("MSG=Error: {}, details: {}", e.getMessage(), e);
      }

  }

  

private ReactiveCouchbaseTemplate myReactiveCouchbaseTemplate(final CouchbaseClientFactory couchbaseClientFactory,
                                                                 final MappingCouchbaseConverter mappingCouchbaseConverter) {
        return new ReactiveCouchbaseTemplate(couchbaseClientFactory, mappingCouchbaseConverter,
            new JacksonTranslationService(), QueryScanConsistency.REQUEST_PLUS);
  }

Please upgrade to spring data couchbase 4.4.2. If the problem persists, please repost with the new stacktrace.

  • Mike