lxl910128 opened a new issue #8459:
URL: https://github.com/apache/shardingsphere/issues/8459
Which version of ShardingSphere did you use?
5.0.0-alpha
Which project did you use? ShardingSphere-JDBC or ShardingSphere-Proxy?
ShardingSphere-JDBC
I want to test the feature that "replica query". I created a spring project,
Use the yml file to configure it.
When I config "load-balancers" like this:
```
spring:
shardingsphere:
rules:
replica-query:
data-sources:
pr_ds:
primary-data-source-name: ds_1
replica-data-source-names: ds_0
load-balancer-name: robin
load-balancers:
robin:
type: ROUND_ROBIN
```
I got a error!
```
2020-12-01 22:09:40.000 ERROR 16097 --- [ main]
o.s.boot.SpringApplication : Application run failed
java.lang.reflect.InvocationTargetException: null
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
~[na:1.8.0_231]
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
~[na:1.8.0_231]
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
~[na:1.8.0_231]
at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_231]
at
org.apache.shardingsphere.spring.boot.util.PropertyUtil.v2(PropertyUtil.java:111)
~[shardingsphere-jdbc-spring-boot-starter-infra-5.0.0-RC1-SNAPSHOT.jar:5.0.0-RC1-SNAPSHOT]
at
org.apache.shardingsphere.spring.boot.util.PropertyUtil.handle(PropertyUtil.java:75)
~[shardingsphere-jdbc-spring-boot-starter-infra-5.0.0-RC1-SNAPSHOT.jar:5.0.0-RC1-SNAPSHOT]
at
org.apache.shardingsphere.spring.boot.registry.AbstractAlgorithmProvidedBeanRegistry.lambda$registerBean$1(AbstractAlgorithmProvidedBeanRegistry.java:57)
~[shardingsphere-jdbc-spring-boot-starter-infra-5.0.0-RC1-SNAPSHOT.jar:5.0.0-RC1-SNAPSHOT]
at java.lang.Iterable.forEach(Iterable.java:75) ~[na:1.8.0_231]
at
org.apache.shardingsphere.spring.boot.registry.AbstractAlgorithmProvidedBeanRegistry.registerBean(AbstractAlgorithmProvidedBeanRegistry.java:55)
~[shardingsphere-jdbc-spring-boot-starter-infra-5.0.0-RC1-SNAPSHOT.jar:5.0.0-RC1-SNAPSHOT]
at
org.apache.shardingsphere.replicaquery.spring.boot.algorithm.ReplicaQueryAlgorithmProvidedBeanRegistry.postProcessBeanDefinitionRegistry(ReplicaQueryAlgorithmProvidedBeanRegistry.java:43)
~[shardingsphere-replica-query-spring-boot-starter-5.0.0-RC1-SNAPSHOT.jar:5.0.0-RC1-SNAPSHOT]
at
org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:271)
~[spring-context-5.0.13.RELEASE.jar:5.0.13.RELEASE]
at
org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:121)
~[spring-context-5.0.13.RELEASE.jar:5.0.13.RELEASE]
at
org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:706)
~[spring-context-5.0.13.RELEASE.jar:5.0.13.RELEASE]
at
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:533)
~[spring-context-5.0.13.RELEASE.jar:5.0.13.RELEASE]
at
org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:142)
~[spring-boot-2.0.9.RELEASE.jar:2.0.9.RELEASE]
at
org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754)
[spring-boot-2.0.9.RELEASE.jar:2.0.9.RELEASE]
at
org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:386)
[spring-boot-2.0.9.RELEASE.jar:2.0.9.RELEASE]
at
org.springframework.boot.SpringApplication.run(SpringApplication.java:307)
[spring-boot-2.0.9.RELEASE.jar:2.0.9.RELEASE]
at
org.springframework.boot.SpringApplication.run(SpringApplication.java:1242)
[spring-boot-2.0.9.RELEASE.jar:2.0.9.RELEASE]
at
org.springframework.boot.SpringApplication.run(SpringApplication.java:1230)
[spring-boot-2.0.9.RELEASE.jar:2.0.9.RELEASE]
at
club.gaiaproject.homework.source.DataSourceApplication.main(DataSourceApplication.java:24)
[classes/:na]
Caused by: java.util.NoSuchElementException: No value bound
at
org.springframework.boot.context.properties.bind.BindResult.get(BindResult.java:56)
~[spring-boot-2.0.9.RELEASE.jar:2.0.9.RELEASE]
... 21 common frames omitted
```
Through debug, I found that `ReplicaQueryAlgorithmProvidedBeanRegistry`
calls the `registerBean`. In the `registerBean`, It will certainly look for it
`xxx.props` like this

but in the
[doc](https://shardingsphere.apache.org/document/current/en/user-manual/shardingsphere-jdbc/configuration/built-in-algorithm/load-balance/)
ROUND_ROBIN don't have any Attributes.
so I must config like this:
```
spring:
shardingsphere:
rules:
replica-query:
data-sources:
pr_ds:
primary-data-source-name: ds_1
replica-data-source-names: ds_0
load-balancer-name: robin
load-balancers:
robin:
type: ROUND_ROBIN
props:
test: test
```
I think , It’s a bug, But I don't have a good idea to fix it.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]