You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by du...@apache.org on 2022/10/11 10:35:16 UTC

[shardingsphere] branch master updated: Fix data source state NPE when force start (#21484)

This is an automated email from the ASF dual-hosted git repository.

duanzhengqiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git


The following commit(s) were added to refs/heads/master by this push:
     new 13c7e535031 Fix data source state NPE when force start (#21484)
13c7e535031 is described below

commit 13c7e53503121ff9bd21a8726204cfddcc806698
Author: ZhangCheng <fl...@outlook.com>
AuthorDate: Tue Oct 11 18:35:08 2022 +0800

    Fix data source state NPE when force start (#21484)
    
    * Fix data source state NPE when force start
    
    * Fix
---
 .../metadata/database/resource/ShardingSphereResourceMetaData.java  | 6 +++---
 .../shardingsphere/mode/metadata/MetaDataContextsFactory.java       | 2 +-
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/resource/ShardingSphereResourceMetaData.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/resource/ShardingSphereResourceMetaData.java
index 4d4028da0e7..c61fb1dd007 100644
--- a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/resource/ShardingSphereResourceMetaData.java
+++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/resource/ShardingSphereResourceMetaData.java
@@ -49,12 +49,12 @@ public final class ShardingSphereResourceMetaData {
     
     public ShardingSphereResourceMetaData(final String databaseName, final Map<String, DataSource> dataSources) {
         this.dataSources = dataSources;
-        databaseType = getDatabaseType(DataSourceStateManager.getInstance().getEnabledDataSourceMap(databaseName, dataSources));
+        databaseType = getDatabaseType(databaseName, dataSources);
         dataSourceMetaDataMap = createDataSourceMetaDataMap(dataSources);
     }
     
-    private DatabaseType getDatabaseType(final Map<String, DataSource> dataSources) {
-        return dataSources.isEmpty() ? null : DatabaseTypeEngine.getDatabaseType(dataSources.values());
+    private DatabaseType getDatabaseType(final String databaseName, final Map<String, DataSource> dataSources) {
+        return dataSources.isEmpty() ? null : DatabaseTypeEngine.getDatabaseType(DataSourceStateManager.getInstance().getEnabledDataSourceMap(databaseName, dataSources).values());
     }
     
     private Map<String, DataSourceMetaData> createDataSourceMetaDataMap(final Map<String, DataSource> dataSources) {
diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContextsFactory.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContextsFactory.java
index 1a1d4daf4e7..f32316edbd1 100644
--- a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContextsFactory.java
+++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContextsFactory.java
@@ -110,7 +110,7 @@ public final class MetaDataContextsFactory {
     private static void checkDataSourceStates(final Map<String, DatabaseConfiguration> databaseConfigs, final Map<String, StorageNodeDataSource> storageNodes, final boolean force) {
         Map<String, DataSourceState> storageDataSourceStates = getStorageDataSourceStates(storageNodes);
         databaseConfigs.forEach((key, value) -> {
-            if (null != value.getDataSources()) {
+            if (null != value.getDataSources() && !value.getDataSources().isEmpty()) {
                 DataSourceStateManager.getInstance().initStates(key, value.getDataSources(), storageDataSourceStates, force);
             }
         });