From 3bd9da647cb6756a1a8eebeb7399ea27161d5b79 Mon Sep 17 00:00:00 2001 From: guoaomen Date: Wed, 11 Nov 2020 14:59:44 +0800 Subject: [PATCH] fix: inner 674 distinguish shardingUseless and rwSplitUseless --- .../backend/datasource/PhysicalDbGroup.java | 23 +++++++++++++++---- .../dble/config/ConfigInitializer.java | 6 ++--- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/actiontech/dble/backend/datasource/PhysicalDbGroup.java b/src/main/java/com/actiontech/dble/backend/datasource/PhysicalDbGroup.java index 4e2a404cd..9b5a887f3 100644 --- a/src/main/java/com/actiontech/dble/backend/datasource/PhysicalDbGroup.java +++ b/src/main/java/com/actiontech/dble/backend/datasource/PhysicalDbGroup.java @@ -50,7 +50,8 @@ public class PhysicalDbGroup { private final LoadBalancer loadBalancer = new RandomLoadBalancer(); private final ReentrantReadWriteLock adjustLock = new ReentrantReadWriteLock(); - private boolean useless = true; + private boolean shardingUseless = true; + private boolean rwSplitUseless = true; public PhysicalDbGroup(String name, DbGroupConfig config, PhysicalDbInstance writeDbInstances, PhysicalDbInstance[] readDbInstances, int rwSplitMode) { this.groupName = name; @@ -127,11 +128,23 @@ public class PhysicalDbGroup { } public boolean isUseless() { - return useless; + return shardingUseless && rwSplitUseless; } - public void setUseless(boolean useless) { - this.useless = useless; + public boolean isShardingUseless() { + return shardingUseless; + } + + public boolean isRwSplitUseless() { + return rwSplitUseless; + } + + public void setShardingUseless(boolean shardingUseless) { + this.shardingUseless = shardingUseless; + } + + public void setRwSplitUseless(boolean rwSplitUseless) { + this.rwSplitUseless = rwSplitUseless; } private boolean checkSlaveSynStatus() { @@ -442,6 +455,6 @@ public class PhysicalDbGroup { pool.getDbGroupConfig().getRwSplitMode() == this.dbGroupConfig.getRwSplitMode() && pool.getDbGroupConfig().getDelayThreshold() == this.dbGroupConfig.getDelayThreshold() && pool.getDbGroupConfig().isDisableHA() == this.dbGroupConfig.isDisableHA() && - pool.getGroupName().equals(this.groupName) && pool.isUseless() == this.isUseless(); + pool.getGroupName().equals(this.groupName) && pool.isShardingUseless() == this.isShardingUseless() && pool.isRwSplitUseless() == this.isRwSplitUseless(); } } diff --git a/src/main/java/com/actiontech/dble/config/ConfigInitializer.java b/src/main/java/com/actiontech/dble/config/ConfigInitializer.java index ff6956be2..53d20478d 100644 --- a/src/main/java/com/actiontech/dble/config/ConfigInitializer.java +++ b/src/main/java/com/actiontech/dble/config/ConfigInitializer.java @@ -158,7 +158,7 @@ public class ConfigInitializer implements ProblemReporter { if (allUseShardingNode.contains(shardingNodeName)) { shardingNodeGroup = entry.getValue().getDbGroup(); if (shardingNodeGroup != null) { - shardingNodeGroup.setUseless(false); + shardingNodeGroup.setShardingUseless(false); } else { throw new ConfigException("dbGroup not exists " + entry.getValue().getDbGroupName()); } @@ -180,10 +180,10 @@ public class ConfigInitializer implements ProblemReporter { group = this.dbGroups.get(rwSplitUserConfig.getDbGroup()); if (group == null) { throw new ConfigException("The user's group[" + rwSplitUserConfig.getName() + "." + rwSplitUserConfig.getDbGroup() + "] for rwSplit isn't configured in db.xml."); - } else if (!group.isUseless()) { + } else if (!group.isShardingUseless()) { throw new ConfigException("The group[" + rwSplitUserConfig.getName() + "." + rwSplitUserConfig.getDbGroup() + "] has been used by sharding node, can't be used by rwSplit."); } else { - group.setUseless(false); + group.setRwSplitUseless(false); } } }