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);
}