This is an automated email from the ASF dual-hosted git repository.
zhangliang 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 7c6470265ad Refactor LoadTableMetaDataFailedException (#35004)
7c6470265ad is described below
commit 7c6470265adc8ac988831b61e07f14be3d3b67b7
Author: Liang Zhang <[email protected]>
AuthorDate: Sat Mar 15 22:22:03 2025 +0800
Refactor LoadTableMetaDataFailedException (#35004)
---
.../content/user-manual/error-code/sql-error-code.cn.md | 1 +
.../content/user-manual/error-code/sql-error-code.en.md | 1 +
.../mode/exception/LoadTableMetaDataFailedException.java | 11 +++++++++--
.../persist/service/ClusterMetaDataManagerPersistService.java | 8 ++------
.../service/StandaloneMetaDataManagerPersistService.java | 4 ++--
5 files changed, 15 insertions(+), 10 deletions(-)
diff --git a/docs/document/content/user-manual/error-code/sql-error-code.cn.md
b/docs/document/content/user-manual/error-code/sql-error-code.cn.md
index 6233f6cde07..a8d6e3bc931 100644
--- a/docs/document/content/user-manual/error-code/sql-error-code.cn.md
+++ b/docs/document/content/user-manual/error-code/sql-error-code.cn.md
@@ -21,6 +21,7 @@ SQL 错误码以标准的 SQL State,Vendor Code 和详细错误信息提供,
| 10004 | 42S02 | Index '%s' does not exist.
|
| 10005 | 42S01 | Index '%s' already exists.
|
| 10010 | HY000 | Rule and storage meta data mismatched, reason is:
%s. |
+| 10012 | HY000 | Load table meta data failed for database '%s' and
tables '%s'. |
| 10100 | HY000 | Can not %s storage units '%s'.
|
| 10101 | 42S02 | There is no storage unit in database '%s'.
|
| 10102 | 44000 | Storage units '%s' do not exist in database '%s'.
|
diff --git a/docs/document/content/user-manual/error-code/sql-error-code.en.md
b/docs/document/content/user-manual/error-code/sql-error-code.en.md
index 0e44d8639a0..2843409c195 100644
--- a/docs/document/content/user-manual/error-code/sql-error-code.en.md
+++ b/docs/document/content/user-manual/error-code/sql-error-code.en.md
@@ -22,6 +22,7 @@ SQL error codes provide by standard `SQL State`, `Vendor
Code` and `Reason`, whi
| 10005 | 42S01 | Index '%s' already exists.
|
| 10010 | HY000 | Rule and storage meta data mismatched, reason is:
%s. |
| 10100 | HY000 | Can not %s storage units '%s'.
|
+| 10012 | HY000 | Load table meta data failed for database '%s' and
tables '%s'. |
| 10101 | 42S02 | There is no storage unit in database '%s'.
|
| 10102 | 44000 | Storage units '%s' do not exist in database '%s'.
|
| 10103 | 44000 | Storage unit '%s' still used by '%s'.
|
diff --git
a/mode/core/src/main/java/org/apache/shardingsphere/mode/exception/LoadTableMetaDataFailedException.java
b/mode/core/src/main/java/org/apache/shardingsphere/mode/exception/LoadTableMetaDataFailedException.java
index 4048c192807..6a128e8d17d 100644
---
a/mode/core/src/main/java/org/apache/shardingsphere/mode/exception/LoadTableMetaDataFailedException.java
+++
b/mode/core/src/main/java/org/apache/shardingsphere/mode/exception/LoadTableMetaDataFailedException.java
@@ -20,12 +20,19 @@ package org.apache.shardingsphere.mode.exception;
import
org.apache.shardingsphere.infra.exception.core.external.sql.sqlstate.XOpenSQLState;
import
org.apache.shardingsphere.infra.exception.core.external.sql.type.kernel.category.MetaDataSQLException;
+import java.sql.SQLException;
+import java.util.Collection;
+
/**
* Load table meta data failed exception.
*/
public final class LoadTableMetaDataFailedException extends
MetaDataSQLException {
- public LoadTableMetaDataFailedException() {
- super(XOpenSQLState.GENERAL_ERROR, 12, "Failed to load table meta
data.");
+ public LoadTableMetaDataFailedException(final String databaseName, final
SQLException cause) {
+ super(XOpenSQLState.GENERAL_ERROR, 12, cause, "Load table meta data
failed for database '%s'.", databaseName);
+ }
+
+ public LoadTableMetaDataFailedException(final String databaseName, final
Collection<String> needReloadTables, final SQLException cause) {
+ super(XOpenSQLState.GENERAL_ERROR, 12, cause, "Load table meta data
failed for database '%s' and tables '%s'.", databaseName, String.join(", ",
needReloadTables));
}
}
diff --git
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/persist/service/ClusterMetaDataManagerPersistService.java
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/persist/service/ClusterMetaDataManagerPersistService.java
index 4703962f29f..86b8e7e15d3 100644
---
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/persist/service/ClusterMetaDataManagerPersistService.java
+++
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/persist/service/ClusterMetaDataManagerPersistService.java
@@ -18,7 +18,6 @@
package org.apache.shardingsphere.mode.manager.cluster.persist.service;
import lombok.SneakyThrows;
-import lombok.extern.slf4j.Slf4j;
import org.apache.shardingsphere.infra.config.rule.RuleConfiguration;
import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
import
org.apache.shardingsphere.infra.datasource.pool.props.domain.DataSourcePoolProperties;
@@ -58,7 +57,6 @@ import java.util.stream.Collectors;
/**
* Cluster meta data manager persist service.
*/
-@Slf4j
public final class ClusterMetaDataManagerPersistService implements
MetaDataManagerPersistService {
private final MetaDataContextManager metaDataContextManager;
@@ -192,8 +190,7 @@ public final class ClusterMetaDataManagerPersistService
implements MetaDataManag
tables.forEach(each ->
metaDataPersistFacade.getDatabaseMetaDataFacade().getTable().drop(databaseName,
entry.getKey(), each.getName()));
}
} catch (final SQLException ex) {
- log.error("Reload table meta failed, databaseName:{}",
databaseName, ex);
- throw new LoadTableMetaDataFailedException();
+ throw new LoadTableMetaDataFailedException(databaseName, ex);
}
Optional.ofNullable(reloadMetaDataContexts.getStatistics().getDatabaseStatistics(databaseName))
.ifPresent(optional ->
optional.getSchemaStatisticsMap().forEach((schemaName, schemaStatistics) ->
metaDataPersistFacade.getStatisticsService()
@@ -241,8 +238,7 @@ public final class ClusterMetaDataManagerPersistService
implements MetaDataManag
metaDataPersistFacade.getDatabaseMetaDataFacade().getTable().persist(databaseName,
entry.getKey(), tables);
}
} catch (final SQLException ex) {
- log.error("Reload table meta failed, databaseName:{},
needReloadTables:{}", databaseName, needReloadTables, ex);
- throw new LoadTableMetaDataFailedException();
+ throw new LoadTableMetaDataFailedException(databaseName,
needReloadTables, ex);
}
}
diff --git
a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/persist/service/StandaloneMetaDataManagerPersistService.java
b/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/persist/service/StandaloneMetaDataManagerPersistService.java
index 819f6076386..637cf5c89a8 100644
---
a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/persist/service/StandaloneMetaDataManagerPersistService.java
+++
b/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/persist/service/StandaloneMetaDataManagerPersistService.java
@@ -213,7 +213,7 @@ public final class StandaloneMetaDataManagerPersistService
implements MetaDataMa
tables.forEach(each ->
metaDataPersistFacade.getDatabaseMetaDataFacade().getTable().drop(databaseName,
entry.getKey(), each.getName()));
}
} catch (final SQLException ex) {
- throw new LoadTableMetaDataFailedException();
+ throw new LoadTableMetaDataFailedException(databaseName, ex);
}
}
@@ -278,7 +278,7 @@ public final class StandaloneMetaDataManagerPersistService
implements MetaDataMa
tables.forEach(each ->
metaDataContextManager.getDatabaseMetaDataManager().alterTable(databaseName,
entry.getKey(), each));
}
} catch (final SQLException ex) {
- throw new LoadTableMetaDataFailedException();
+ throw new LoadTableMetaDataFailedException(databaseName,
needReloadTables, ex);
}
}