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 <zhangli...@apache.org> 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); } }