From a7ee9eadba0881bb474421292e4ac0656c3793b5 Mon Sep 17 00:00:00 2001 From: ailanyin Date: Thu, 15 Jun 2023 09:50:19 +0800 Subject: [PATCH] add --- .../monitor/DatasourceConnectionMonitor.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/qiaoba-commons/qiaoba-common-datasource/src/main/java/com/qiaoba/common/database/monitor/DatasourceConnectionMonitor.java b/qiaoba-commons/qiaoba-common-datasource/src/main/java/com/qiaoba/common/database/monitor/DatasourceConnectionMonitor.java index 4bafa11..d86b144 100644 --- a/qiaoba-commons/qiaoba-common-datasource/src/main/java/com/qiaoba/common/database/monitor/DatasourceConnectionMonitor.java +++ b/qiaoba-commons/qiaoba-common-datasource/src/main/java/com/qiaoba/common/database/monitor/DatasourceConnectionMonitor.java @@ -65,11 +65,12 @@ public class DatasourceConnectionMonitor { } log.error("租户[{}]-目前主数据源异常, 开始切换备用数据源", tenantId); - // 关闭原有异常数据源 connection.close(); - dataSource.close(); // 主数据源异常 切换备用数据源 - changePrimary(tenantId); + if (changePrimary(tenantId)) { + // 备用切换成功, 关闭原有异常数据源 + dataSource.close(); + } } catch (SQLException e) { e.printStackTrace(); } @@ -102,11 +103,12 @@ public class DatasourceConnectionMonitor { * * @param tenantId 租户ID */ - private void changePrimary(String tenantId) { + private Boolean changePrimary(String tenantId) { // 备用数据源 List dataSources = DynamicDataSourceConfig.BACKUP_DATASOURCE_MAP.get(tenantId); if (Objects.isNull(dataSources)) { log.error("租户:[{}]切换备用数据源失败, 原因: 没有备用数据源", tenantId); + return false; } Integer backupIndex = null; @@ -131,8 +133,10 @@ public class DatasourceConnectionMonitor { // 备用数据源集合删除该数据源 dataSources.remove((int) backupIndex); log.info("租户:[{}]切换备用数据源成功, 现主数据ID: {}", tenantId, dynamicDataSource.getDatasourceId()); + return true; } else { log.error("租户:[{}]切换备用数据源失败, 原因: 备用数据源均无效", tenantId); + return false; } } }