Describe the bug - when AoT compiled, runtime loadBalancerClientFactory.getInstances(serviceId, LoadBalancerLifecycle.class) throw a IllegalArgumentException(result) - keyword source code

            Set<LoadBalancerLifecycle> supportedLifecycleProcessors = LoadBalancerLifecycleValidator
                    .getSupportedLifecycleProcessors(
                            loadBalancerClientFactory.getInstances(serviceId, LoadBalancerLifecycle.class),
                            RetryableRequestContext.class, ResponseData.class, ServiceInstance.class)

Sample stack is

java.lang.IllegalArgumentException: Object of class [org.springframework.context.support.GenericApplicationContext] must be an instance of interface org.springframework.context.annotation.AnnotationConfigRegistry
        at org.springframework.util.Assert.instanceCheckFailed(Assert.java:713) ~[na:na]
        at org.springframework.util.Assert.isInstanceOf(Assert.java:613) ~[na:na]
        at org.springframework.util.Assert.isInstanceOf(Assert.java:644) ~[na:na]
        at org.springframework.cloud.context.named.NamedContextFactory.registerBeans(NamedContextFactory.java:143) ~[example-service-account:4.0.0-RC3]
        at org.springframework.cloud.context.named.NamedContextFactory.createContext(NamedContextFactory.java:137) ~[example-service-account:4.0.0-RC3]
        at org.springframework.cloud.context.named.NamedContextFactory.getContext(NamedContextFactory.java:122) ~[example-service-account:4.0.0-RC3]
        at org.springframework.cloud.context.named.NamedContextFactory.getInstances(NamedContextFactory.java:236) ~[example-service-account:4.0.0-RC3]
        at org.springframework.cloud.openfeign.loadbalancer.RetryableFeignBlockingLoadBalancerClient.lambda$execute$2(RetryableFeignBlockingLoadBalancerClient.java:140) ~[na:na]
        at org.springframework.retry.support.RetryTemplate.doExecute(RetryTemplate.java:329) ~[na:na]
        at org.springframework.retry.support.RetryTemplate.execute(RetryTemplate.java:225) ~[na:na]
        at org.springframework.cloud.openfeign.loadbalancer.RetryableFeignBlockingLoadBalancerClient.execute(RetryableFeignBlockingLoadBalancerClient.java:135) ~[na:na]
        at feign.SynchronousMethodHandler.executeAndDecode(SynchronousMethodHandler.java:102) ~[na:na]
        at feign.SynchronousMethodHandler.invoke(SynchronousMethodHandler.java:72) ~[na:na]
        at feign.ReflectiveFeign$FeignInvocationHandler.invoke(ReflectiveFeign.java:98) ~[na:na]
        at jdk.proxy4/jdk.proxy4.$Proxy47.passport(Unknown Source) ~[na:na]

Comment From: ccwxl

  • https://github.com/spring-cloud/spring-cloud-commons/pull/1176/files
  • need to explicitly specify the value of LoadBalancerClient?

Comment From: OlgaMaciaszek

Hello @siaron, yes you need to indicate the service ids for AOT and native. Is it still failing if you do that? If yes, could you please provide a minimal, complete, verifiable example that reproduces the issue?

Comment From: ccwxl

yes. it work

Comment From: OlgaMaciaszek

Hello @peterhonneparker please note that this repository is maintained in English. Any comments written in other languages won't be read or addressed.