#遇到问题
动态更新配置 actualDataNodes 时出现问题
相关依赖
<!-- Sharding-JDBC -->
<dependency>
<groupId>org.apache.shardingsphere</groupId>
<artifactId>shardingsphere-jdbc-core-spring-boot-starter</artifactId>
<version>5.1.0</version>
</dependency>
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc8</artifactId>
<version>12.2.0.1</version>
</dependency>
调用 ContextManager contextManager = ShardingSphereDataSource.getContextManager;
contextManager.alterRuleConfiguration(schemaName, newRuleConfigList); //oracle下更新 shardingsphere 的上下文规则配置报错
2023-07-15 16:59:02.920 ERROR 32696 --- [ main] .a.s.i.m.s.b.l.TableMetaDataLoaderEngine : Dialect load table meta data error
org.apache.shardingsphere.infra.exception.ShardingSphereException: java.util.concurrent.ExecutionException: java.lang.NullPointerException
at org.apache.shardingsphere.infra.metadata.schema.builder.loader.TableMetaDataLoaderEngine.loadByDialect(TableMetaDataLoaderEngine.java:98) ~[shardingsphere-infra-common-5.1.0.jar:5.1.0]
at org.apache.shardingsphere.infra.metadata.schema.builder.loader.TableMetaDataLoaderEngine.load(TableMetaDataLoaderEngine.java:65) ~[shardingsphere-infra-common-5.1.0.jar:5.1.0]
at org.apache.shardingsphere.singletable.metadata.SingleTableMetaDataBuilder.load(SingleTableMetaDataBuilder.java:56) [shardingsphere-single-table-core-5.1.0.jar:5.1.0]
at org.apache.shardingsphere.singletable.metadata.SingleTableMetaDataBuilder.load(SingleTableMetaDataBuilder.java:43) [shardingsphere-single-table-core-5.1.0.jar:5.1.0]
at org.apache.shardingsphere.infra.metadata.schema.builder.TableMetaDataBuilder.load(TableMetaDataBuilder.java:64) [shardingsphere-infra-common-5.1.0.jar:5.1.0]
at org.apache.shardingsphere.infra.metadata.schema.loader.SchemaLoader.load(SchemaLoader.java:53) [shardingsphere-infra-common-5.1.0.jar:5.1.0]
at org.apache.shardingsphere.mode.metadata.MetaDataContextsBuilder.addSchema(MetaDataContextsBuilder.java:78) [shardingsphere-mode-core-5.1.0.jar:5.1.0]
at org.apache.shardingsphere.mode.manager.ContextManager.buildChangedMetaDataContext(ContextManager.java:446) [shardingsphere-mode-core-5.1.0.jar:5.1.0]
at org.apache.shardingsphere.mode.manager.ContextManager.alterRuleConfiguration(ContextManager.java:259) [shardingsphere-mode-core-5.1.0.jar:5.1.0]
at com.demo.module.config.sharding.ShardingAlgorithmTool.updateShardRuleActualDataNodes(ShardingAlgorithmTool.java:246) [classes/:na]
at com.demo.module.config.sharding.ShardingAlgorithmTool.actualDataNodesRefresh(ShardingAlgorithmTool.java:162) [classes/:na]
at com.demo.module.config.sharding.ShardingAlgorithmTool.tableNameCacheReload(ShardingAlgorithmTool.java:101) [classes/:na]
at com.demo.module.config.sharding.ShardingAlgorithmTool.createShardingTable(ShardingAlgorithmTool.java:280) [classes/:na]
at com.demo.module.config.sharding.ShardingAlgorithmTool.getShardingTableAndCreate(ShardingAlgorithmTool.java:74) [classes/:na]
at com.demo.module.config.sharding.TimeShardingAlgorithm.doSharding(TimeShardingAlgorithm.java:66) [classes/:na]
at org.apache.shardingsphere.sharding.algorithm.sharding.classbased.ClassBasedShardingAlgorithm.doSharding(ClassBasedShardingAlgorithm.java:87) [shardingsphere-sharding-core-5.1.0.jar:5.1.0]
at org.apache.shardingsphere.sharding.route.strategy.type.standard.StandardShardingStrategy.doSharding(StandardShardingStrategy.java:68) [shardingsphere-sharding-core-5.1.0.jar:5.1.0]
at org.apache.shardingsphere.sharding.route.strategy.type.standard.StandardShardingStrategy.doSharding(StandardShardingStrategy.java:57) [shardingsphere-sharding-core-5.1.0.jar:5.1.0]
具体代码路径
C:/Users/admin/.m2/repository/org/apache/shardingsphere/shardingsphere-infra-common/5.1.0/shardingsphere-infra-common-5.1.0.jar!/org/apache/shardingsphere/infra/metadata/schema/builder/loader/TableMetaDataLoaderEngine.class:76
不影响执行, 动态修改上下文配置出现空指针,暂时没有找到具体的空指针原因, 还是我的依赖包有问题, 又遇到相同问题的可以一起探讨一下
org.apache.shardingsphere.orchestration.reg.api.RegistryCenter
com.changan.carbond.shardingjdbc.LocalRegistryCenter
com.xstudio.shardingjdbc.LocalRegistryCenter
和上述类保持一致【SPI注册】