From ee32ed169465e2104c7bc77a25e73f92915e9bae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B9=8B=E6=B1=9F=E5=AE=9E=E9=AA=8C=E5=AE=A4?= Date: Tue, 27 Oct 2020 16:11:25 +0800 Subject: [PATCH] bug fix --- .../org/dubhe/utils/MyPreciseShardingAlgorithm.java | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/dubhe-server/dubhe-system/src/main/java/org/dubhe/utils/MyPreciseShardingAlgorithm.java b/dubhe-server/dubhe-system/src/main/java/org/dubhe/utils/MyPreciseShardingAlgorithm.java index 85cccca..e806fc5 100644 --- a/dubhe-server/dubhe-system/src/main/java/org/dubhe/utils/MyPreciseShardingAlgorithm.java +++ b/dubhe-server/dubhe-system/src/main/java/org/dubhe/utils/MyPreciseShardingAlgorithm.java @@ -18,6 +18,9 @@ package org.dubhe.utils; import java.util.Collection; +import java.util.HashSet; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; import org.apache.shardingsphere.api.sharding.standard.PreciseShardingAlgorithm; import org.apache.shardingsphere.api.sharding.standard.PreciseShardingValue; @@ -38,6 +41,8 @@ public class MyPreciseShardingAlgorithm implements PreciseShardingAlgorithm tableNames = new HashSet<>(); + /** * 分表策略处理 * @@ -49,10 +54,17 @@ public class MyPreciseShardingAlgorithm implements PreciseShardingAlgorithm collection, PreciseShardingValue preciseShardingValue) { long startIndex = 1; long endIndex = 50; - dataSequenceService = SpringContextHolder.getBean(DataSequenceService.class); String tableName = preciseShardingValue.getLogicTableName()+ "_" + preciseSharding(preciseShardingValue.getValue(),startIndex ,endIndex); - if(!dataSequenceService.checkTableExist(tableName)){ - dataSequenceService.createTable(tableName); + if(!tableNames.contains(tableName)) { + dataSequenceService = SpringContextHolder.getBean(DataSequenceService.class); + if(!dataSequenceService.checkTableExist(tableName)){ + try{ + dataSequenceService.createTable(tableName); + } catch (Exception e) { + LogUtil.info(LogEnum.DATA_SEQUENCE, "table name repeat {}", tableName); + } + } + tableNames.add(tableName); } return tableName; }