Describe the bug
During getting elements from cache, annotated by @Cacheable on FeignClient, cache get error handler execute twice.
It looks like it is caused by change https://github.com/spring-cloud/spring-cloud-openfeign/pull/608. The flow seems to be as follows:
-> CacheInterceptor
-> CacheAspectSupport#execute:402 (findCachedItem)
-> handleCacheGetError
-> CacheAspectSupport#execute:421 (invokeOperation)
-> FeignCachingInvocationHandlerFactory#create:53 (cacheInterceptor.invoke)
-> CacheAspectSupport#execute:402 (findCachedItem)
-> handleCacheGetError
Affected spring cloud version: 2021.0.0
Sample Sample application that reproduces the problem: https://github.com/fureq/spring-feign-bug. Details are described in readme.
Comment From: OlgaMaciaszek
Hello @fureq, thanks for reporting the issue and providing a sample. I was able to reproduce this.
Comment From: zhangt2333
In my project, I just set spring.cloud.openfeign.cache.enabled=false (feign.cache.enabled=false in spring-cloud-openfeign-core-3.1.0.jar) to disable twice cache operations. The org.springframework.cache.interceptor.CacheInterceptor (created at org.springframework.cache.annotation.ProxyCachingConfiguration#cacheInterceptor) already supports the @Cacheable annotation on methods within classes annotated with @FeignClient.