From d9efdfb2321f011a03f40feb2aaa6456298b5985 Mon Sep 17 00:00:00 2001 From: xiazhou <1187567532@qq.com> Date: Mon, 2 Sep 2024 13:03:03 +0800 Subject: [PATCH] =?UTF-8?q?1.=20SwitchManager=20support=20http=E3=80=81tcp?= =?UTF-8?q?=E3=80=81mysql=20healthParams=20and=20pushCSharpVersion=20updat?= =?UTF-8?q?e.=202.=20remove=20batch=20update.=203.=20debug=20param=20defau?= =?UTF-8?q?lt=20is=20false.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nacos/naming/misc/SwitchEntry.java | 8 +++ .../nacos/naming/misc/SwitchManager.java | 68 ++++++++++++------- .../naming/model/form/UpdateSwitchForm.java | 6 +- 3 files changed, 54 insertions(+), 28 deletions(-) diff --git a/naming/src/main/java/com/alibaba/nacos/naming/misc/SwitchEntry.java b/naming/src/main/java/com/alibaba/nacos/naming/misc/SwitchEntry.java index 9529943f8ce..ade52e405b0 100644 --- a/naming/src/main/java/com/alibaba/nacos/naming/misc/SwitchEntry.java +++ b/naming/src/main/java/com/alibaba/nacos/naming/misc/SwitchEntry.java @@ -35,6 +35,8 @@ public class SwitchEntry { public static final String CLIENT_C = "c"; + public static final String CLIENT_CSHARP = "csharp"; + public static final String CLIENT_GO = "go"; public static final String CLIENT_PYTHON = "python"; @@ -65,6 +67,12 @@ public class SwitchEntry { public static final String ENABLE_STANDALONE = "enableStandalone"; + public static final String HTTP_HEALTH_PARAMS = "httpHealthParams"; + + public static final String TCP_HEALTH_PARAMS = "tcpHealthParams"; + + public static final String MYSQL_HEALTH_PARAMS = "mysqlHealthParams"; + public static final int MIN_PUSH_CACHE_TIME_MIILIS = 10000; public static final int MIN_CACHE_TIME_MIILIS = 1000; diff --git a/naming/src/main/java/com/alibaba/nacos/naming/misc/SwitchManager.java b/naming/src/main/java/com/alibaba/nacos/naming/misc/SwitchManager.java index 080bcaa2a4e..a5f7ad77441 100644 --- a/naming/src/main/java/com/alibaba/nacos/naming/misc/SwitchManager.java +++ b/naming/src/main/java/com/alibaba/nacos/naming/misc/SwitchManager.java @@ -18,6 +18,7 @@ import com.alibaba.nacos.api.common.Constants; import com.alibaba.nacos.api.exception.NacosException; +import com.alibaba.nacos.api.exception.runtime.NacosDeserializationException; import com.alibaba.nacos.api.exception.runtime.NacosRuntimeException; import com.alibaba.nacos.common.utils.ByteUtils; import com.alibaba.nacos.common.utils.ConvertUtils; @@ -110,31 +111,6 @@ public void update(String entry, String value, boolean debug) throws Exception { SwitchDomain tempSwitchDomain = this.switchDomain.clone(); - if (SwitchEntry.BATCH.equals(entry)) { - //batch update - SwitchDomain dom = JacksonUtils.toObj(value, SwitchDomain.class); - dom.setEnableStandalone(tempSwitchDomain.isEnableStandalone()); - if (dom.getHttpHealthParams().getMin() < SwitchDomain.HttpHealthParams.MIN_MIN - || dom.getTcpHealthParams().getMin() < SwitchDomain.HttpHealthParams.MIN_MIN) { - - throw new IllegalArgumentException("min check time for http or tcp is too small(<500)"); - } - - if (dom.getHttpHealthParams().getMax() < SwitchDomain.HttpHealthParams.MIN_MAX - || dom.getTcpHealthParams().getMax() < SwitchDomain.HttpHealthParams.MIN_MAX) { - - throw new IllegalArgumentException("max check time for http or tcp is too small(<3000)"); - } - - if (dom.getHttpHealthParams().getFactor() < 0 || dom.getHttpHealthParams().getFactor() > 1 - || dom.getTcpHealthParams().getFactor() < 0 || dom.getTcpHealthParams().getFactor() > 1) { - - throw new IllegalArgumentException("malformed factor"); - } - - tempSwitchDomain = dom; - } - if (entry.equals(SwitchEntry.DISTRO_THRESHOLD)) { float threshold = Float.parseFloat(value); if (threshold <= 0) { @@ -166,6 +142,8 @@ public void update(String entry, String value, boolean debug) throws Exception { tempSwitchDomain.setPushCVersion(version); } else if (StringUtils.equals(SwitchEntry.CLIENT_GO, type)) { tempSwitchDomain.setPushGoVersion(version); + } else if (StringUtils.equals(SwitchEntry.CLIENT_CSHARP, type)) { + tempSwitchDomain.setPushCSharpVersion(version); } else { throw new IllegalArgumentException("unsupported client type: " + type); } @@ -310,6 +288,24 @@ public void update(String entry, String value, boolean debug) throws Exception { tempSwitchDomain.setAutoChangeHealthCheckEnabled(ConvertUtils.toBoolean(value)); } + try { + if (SwitchEntry.HTTP_HEALTH_PARAMS.equals(entry)) { + SwitchDomain.HttpHealthParams httpHealthParams = JacksonUtils.toObj(value, SwitchDomain.HttpHealthParams.class); + tempSwitchDomain.setHttpHealthParams(httpHealthParams); + validateHealthParams(httpHealthParams); + } + if (SwitchEntry.TCP_HEALTH_PARAMS.equals(entry)) { + SwitchDomain.TcpHealthParams tcpHealthParams = JacksonUtils.toObj(value, SwitchDomain.TcpHealthParams.class); + tempSwitchDomain.setTcpHealthParams(tcpHealthParams); + validateHealthParams(tcpHealthParams); + } + if (SwitchEntry.MYSQL_HEALTH_PARAMS.equals(entry)) { + tempSwitchDomain.setMysqlHealthParams(JacksonUtils.toObj(value, SwitchDomain.MysqlHealthParams.class)); + } + } catch (NacosDeserializationException e) { + throw new IllegalArgumentException("json param invalid."); + } + if (debug) { update(tempSwitchDomain); } else { @@ -356,12 +352,34 @@ public void update(SwitchDomain newSwitchDomain) { switchDomain.setPushJavaVersion(newSwitchDomain.getPushJavaVersion()); switchDomain.setPushPythonVersion(newSwitchDomain.getPushPythonVersion()); switchDomain.setPushCVersion(newSwitchDomain.getPushCVersion()); + switchDomain.setPushCSharpVersion(newSwitchDomain.getPushCSharpVersion()); switchDomain.setEnableAuthentication(newSwitchDomain.isEnableAuthentication()); switchDomain.setOverriddenServerStatus(newSwitchDomain.getOverriddenServerStatus()); switchDomain.setDefaultInstanceEphemeral(newSwitchDomain.isDefaultInstanceEphemeral()); switchDomain.setLightBeatEnabled(newSwitchDomain.isLightBeatEnabled()); } + /** + * Validate health params. + * + * @param healthParams health params + */ + public void validateHealthParams(SwitchDomain.HealthParams healthParams) { + if (healthParams.getMin() < SwitchDomain.HttpHealthParams.MIN_MIN) { + throw new IllegalArgumentException("min check time for http or tcp is too small(<500)"); + } + + if (healthParams.getMax() < SwitchDomain.HttpHealthParams.MIN_MAX) { + + throw new IllegalArgumentException("max check time for http or tcp is too small(<3000)"); + } + + if (healthParams.getFactor() < 0 || healthParams.getFactor() > 1) { + + throw new IllegalArgumentException("malformed factor"); + } + } + private void updateWithConsistency(SwitchDomain tempSwitchDomain) throws NacosException { try { final BatchWriteRequest req = new BatchWriteRequest(); diff --git a/naming/src/main/java/com/alibaba/nacos/naming/model/form/UpdateSwitchForm.java b/naming/src/main/java/com/alibaba/nacos/naming/model/form/UpdateSwitchForm.java index d0beca5b2f5..d86995188fd 100644 --- a/naming/src/main/java/com/alibaba/nacos/naming/model/form/UpdateSwitchForm.java +++ b/naming/src/main/java/com/alibaba/nacos/naming/model/form/UpdateSwitchForm.java @@ -33,7 +33,7 @@ public class UpdateSwitchForm implements Serializable { private static final long serialVersionUID = -1580959130954136990L; - private Boolean debug; + private boolean debug; private String entry; @@ -58,11 +58,11 @@ public void validate() throws NacosApiException { } } - public Boolean getDebug() { + public boolean getDebug() { return debug; } - public void setDebug(Boolean debug) { + public void setDebug(boolean debug) { this.debug = debug; }