You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@inlong.apache.org by do...@apache.org on 2021/08/16 12:11:12 UTC

[incubator-inlong] branch INLONG-570 updated: [INLONG-1439] Add the port legal check and remove the useless deleteWhen field (#1440)

This is an automated email from the ASF dual-hosted git repository.

dockerzhang pushed a commit to branch INLONG-570
in repository https://gitbox.apache.org/repos/asf/incubator-inlong.git


The following commit(s) were added to refs/heads/INLONG-570 by this push:
     new ed129f7  [INLONG-1439] Add the port legal check and remove the useless deleteWhen field (#1440)
ed129f7 is described below

commit ed129f72478dcb88d625d280b179a7123d354ee3
Author: gosonzhang <46...@qq.com>
AuthorDate: Mon Aug 16 20:11:08 2021 +0800

    [INLONG-1439] Add the port legal check and remove the useless deleteWhen field (#1440)
---
 .../resources/assets/scripts/brokerDetail.js       |  7 --
 .../resources/assets/scripts/common/module.js      | 16 -----
 .../resources/assets/scripts/topicDetail.js        |  7 --
 .../templates/screen/config/brokerDetail.vm        |  3 -
 .../templates/screen/config/topicDetail.vm         |  1 -
 .../inlong/tubemq/server/broker/BrokerConfig.java  |  7 ++
 .../server/common/utils/WebParameterUtils.java     | 37 +++++++++--
 .../inlong/tubemq/server/master/MasterConfig.java  | 20 ++++++
 .../server/master/metamanage/MetaDataManager.java  | 75 +++++++---------------
 .../master/web/handler/WebBrokerConfHandler.java   |  2 +-
 .../master/web/handler/WebMasterInfoHandler.java   |  4 +-
 11 files changed, 86 insertions(+), 93 deletions(-)

diff --git a/inlong-tubemq/resources/assets/scripts/brokerDetail.js b/inlong-tubemq/resources/assets/scripts/brokerDetail.js
index 2248849..454ef73 100644
--- a/inlong-tubemq/resources/assets/scripts/brokerDetail.js
+++ b/inlong-tubemq/resources/assets/scripts/brokerDetail.js
@@ -232,10 +232,6 @@
                 '        <div class="cnt">' + dataSet.unflushThreshold + '</div>' +
                 '    </div>' +
                 '    <div class="row">' +
-                '        <div class="tit">deleteWhen:</div>' +
-                '        <div class="cnt">' + dataSet.deleteWhen + '</div>' +
-                '    </div>' +
-                '    <div class="row">' +
                 '        <div class="tit">numPartitions:</div>' +
                 '        <div class="cnt">' + dataSet.numPartitions + '</div>' +
                 '    </div>' +
@@ -290,9 +286,6 @@
                     }, {
                         "data": "unflushInterval"
                     }, {
-                        "data": "deleteWhen",
-                        "orderable": false
-                    }, {
                         "data": "deletePolicy",
                         "orderable": false
                     }],
diff --git a/inlong-tubemq/resources/assets/scripts/common/module.js b/inlong-tubemq/resources/assets/scripts/common/module.js
index 91cc1e4..8a0c5a9 100644
--- a/inlong-tubemq/resources/assets/scripts/common/module.js
+++ b/inlong-tubemq/resources/assets/scripts/common/module.js
@@ -298,7 +298,6 @@ Dialog.prototype.addBrokerInfo = function (type, brokerId, callback) {
         'brokerId': '0',
         'brokerIp': '',
         'brokerPort': '8123',
-        'deleteWhen': '0 0 6,18 * * ?',
         'deletePolicy': 'delete,168h',
         'numPartitions': '3',
         'unflushThreshold': '1000',
@@ -330,13 +329,6 @@ Dialog.prototype.addBrokerInfo = function (type, brokerId, callback) {
             '                        </div>' +
             '                    </div>' +
             '                    <div class="row">' +
-            '                        <div class="tit">deleteWhen</div>' +
-            '                        <div class="cnt">' +
-            '                            <input type="text" class="m" value="'
-            + data.deleteWhen + '" name="deleteWhen">' +
-            '                        </div>' +
-            '                    </div>' +
-            '                    <div class="row">' +
             '                        <div class="tit">unflushThreshold</div>' +
             '                        <div class="cnt">' +
             '                            <input type="text" class="m" value="'
@@ -673,7 +665,6 @@ Dialog.prototype.addTopicInfo = function (type, topicName, data) {
     };
     data = data || {
             'topicName': '',
-            'deleteWhen': '0 0 6,18 * * ?',
             'deletePolicy': 'delete,168h',
             'numPartitions': '3',
             'unflushThreshold': '1000',
@@ -699,13 +690,6 @@ Dialog.prototype.addTopicInfo = function (type, topicName, data) {
             '                        </div>' +
             '                    </div>' +
             '                    <div class="row">' +
-            '                        <div class="tit">deleteWhen</div>' +
-            '                        <div class="cnt">' +
-            '                            <input type="text" class="m" value="'
-            + data.deleteWhen + '" name="deleteWhen">' +
-            '                        </div>' +
-            '                    </div>' +
-            '                    <div class="row">' +
             '                        <div class="tit">unflushThreshold</div>' +
             '                        <div class="cnt">' +
             '                            <input type="text" class="m" value="'
diff --git a/inlong-tubemq/resources/assets/scripts/topicDetail.js b/inlong-tubemq/resources/assets/scripts/topicDetail.js
index 9ed53ae..61c752a 100644
--- a/inlong-tubemq/resources/assets/scripts/topicDetail.js
+++ b/inlong-tubemq/resources/assets/scripts/topicDetail.js
@@ -132,10 +132,6 @@
                 '        <div class="cnt">' + dataSet.unflushThreshold + '</div>' +
                 '    </div>' +
                 '    <div class="row">' +
-                '        <div class="tit">deleteWhen:</div>' +
-                '        <div class="cnt">' + dataSet.deleteWhen + '</div>' +
-                '    </div>' +
-                '    <div class="row">' +
                 '        <div class="tit">numPartitions:</div>' +
                 '        <div class="cnt">' + dataSet.numPartitions + '</div>' +
                 '    </div>' +
@@ -295,9 +291,6 @@
                     }, {
                         "data": "unflushInterval"
                     }, {
-                        "data": "deleteWhen",
-                        "orderable": false
-                    }, {
                         "data": "deletePolicy",
                         "orderable": false
                     }, {
diff --git a/inlong-tubemq/resources/templates/screen/config/brokerDetail.vm b/inlong-tubemq/resources/templates/screen/config/brokerDetail.vm
index 44e2824..e20cd87 100644
--- a/inlong-tubemq/resources/templates/screen/config/brokerDetail.vm
+++ b/inlong-tubemq/resources/templates/screen/config/brokerDetail.vm
@@ -104,7 +104,6 @@
                                 <th>acceptSubscribe</th>
                                 <th>unflushThreshold</th>
                                 <th>unflushInterval</th>
-                                <th>deleteWhen</th>
                                 <th>deletePolicy</th>
                             </tr>
                             </thead>
@@ -136,7 +135,6 @@
                                 <th>acceptSubscribe</th>
                                 <th>unflushThreshold</th>
                                 <th>unflushInterval</th>
-                                <th>deleteWhen</th>
                                 <th>deletePolicy</th>
                             </tr>
                             </thead>
@@ -168,7 +166,6 @@
                                 <th>acceptSubscribe</th>
                                 <th>unflushThreshold</th>
                                 <th>unflushInterval</th>
-                                <th>deleteWhen</th>
                                 <th>deletePolicy</th>
                             </tr>
                             </thead>
diff --git a/inlong-tubemq/resources/templates/screen/config/topicDetail.vm b/inlong-tubemq/resources/templates/screen/config/topicDetail.vm
index 3e1089a..f3b80e4 100644
--- a/inlong-tubemq/resources/templates/screen/config/topicDetail.vm
+++ b/inlong-tubemq/resources/templates/screen/config/topicDetail.vm
@@ -79,7 +79,6 @@
                                 <th>numPartitions</th>
                                 <th>unflushThreshold</th>
                                 <th>unflushInterval</th>
-                                <th>deleteWhen</th>
                                 <th>deletePolicy</th>
                                 <th>acceptPublish</th>
                                 <th>acceptSubscribe</th>
diff --git a/inlong-tubemq/tubemq-server/src/main/java/org/apache/inlong/tubemq/server/broker/BrokerConfig.java b/inlong-tubemq/tubemq-server/src/main/java/org/apache/inlong/tubemq/server/broker/BrokerConfig.java
index 49cae39..c544fd8 100644
--- a/inlong-tubemq/tubemq-server/src/main/java/org/apache/inlong/tubemq/server/broker/BrokerConfig.java
+++ b/inlong-tubemq/tubemq-server/src/main/java/org/apache/inlong/tubemq/server/broker/BrokerConfig.java
@@ -180,6 +180,13 @@ public class BrokerConfig extends AbstractFileConfig {
         this.tlsConfig = this.loadTlsSectConf(iniConf,
                 TBaseConstants.META_DEFAULT_BROKER_TLS_PORT);
         this.zkConfig = loadZKeeperSectConf(iniConf);
+        if (this.port == this.webPort
+                || (tlsConfig.isTlsEnable() && (this.tlsConfig.getTlsPort() == this.webPort))) {
+            throw new IllegalArgumentException(new StringBuilder(512)
+                    .append("Illegal port value configuration, the value of ")
+                    .append("port or tlsPort cannot be the same as the value of webPort!")
+                    .toString());
+        }
     }
 
     /***
diff --git a/inlong-tubemq/tubemq-server/src/main/java/org/apache/inlong/tubemq/server/common/utils/WebParameterUtils.java b/inlong-tubemq/tubemq-server/src/main/java/org/apache/inlong/tubemq/server/common/utils/WebParameterUtils.java
index eeb5d22..b0d6dfe 100644
--- a/inlong-tubemq/tubemq-server/src/main/java/org/apache/inlong/tubemq/server/common/utils/WebParameterUtils.java
+++ b/inlong-tubemq/tubemq-server/src/main/java/org/apache/inlong/tubemq/server/common/utils/WebParameterUtils.java
@@ -207,6 +207,9 @@ public class WebParameterUtils {
             return result.isSuccess();
         }
         int qryPriorityId = (int) result.getRetData();
+        if (qryPriorityId == defValue) {
+            return result.isSuccess();
+        }
         if (qryPriorityId > 303 || qryPriorityId < 101) {
             result.setFailResult(sBuffer.append("Illegal value in ")
                     .append(WebFieldDef.QRYPRIORITYID.name)
@@ -371,6 +374,32 @@ public class WebParameterUtils {
     }
 
     /**
+     * Compare whether the configured port values conflict
+     *
+     * @param brokerPort     broker port
+     * @param brokerTlsPort  broker tls port
+     * @param brokerWebPort  broker web port
+     * @param sBuffer        string buffer
+     * @param result     check result of parameter value
+     * @return process result
+     */
+    public static boolean isLegallyPortValueSet(int brokerPort, int brokerTlsPort,
+                                                int brokerWebPort, StringBuilder sBuffer,
+                                                ProcessResult result) {
+        result.setSuccResult(null);
+        if (brokerPort == brokerWebPort || brokerTlsPort == brokerWebPort) {
+            result.setFailResult(DataOpErrCode.DERR_ILLEGAL_VALUE.getCode(),
+                    sBuffer.append("Illegal port value configuration, the value of ")
+                            .append(WebFieldDef.BROKERPORT.name).append(" or ")
+                            .append(WebFieldDef.BROKERTLSPORT.name)
+                            .append(" cannot be the same as the value of")
+                            .append(WebFieldDef.BROKERWEBPORT.name).toString());
+            sBuffer.delete(0, sBuffer.length());
+        }
+        return result.isSuccess();
+    }
+
+    /**
      * Parse the parameter value for TopicPropGroup class
      *
      * @param paramCntr   parameter container object
@@ -1358,7 +1387,7 @@ public class WebParameterUtils {
                                                  boolean checkEmpty,
                                                  boolean checkResToken,
                                                  Set<String> resTokens,
-                                                 final StringBuilder sb) throws Exception {
+                                                 StringBuilder sb) throws Exception {
         Set<String> batchOpGroupNames = new HashSet<>();
         if (TStringUtils.isNotBlank(inputGroupName)) {
             inputGroupName = escDoubleQuotes(inputGroupName.trim());
@@ -1422,7 +1451,7 @@ public class WebParameterUtils {
                                                  boolean checkEmpty,
                                                  boolean checkRange,
                                                  Set<String> checkedTopicList,
-                                                 final StringBuilder sb) throws Exception {
+                                                 StringBuilder sb) throws Exception {
         Set<String> batchOpTopicNames = new HashSet<>();
         if (TStringUtils.isNotBlank(inputTopicName)) {
             inputTopicName = escDoubleQuotes(inputTopicName.trim());
@@ -1657,8 +1686,8 @@ public class WebParameterUtils {
      * @param required
      * @return the yyyyMMddHHmmss format string
      */
-    public static String checkParamCommonRequires(final String paramName, final String paramValue,
-                                                   boolean required) throws Exception {
+    public static String checkParamCommonRequires(String paramName, String paramValue,
+                                                  boolean required) throws Exception {
         String temParamValue = null;
         if (paramValue == null) {
             if (required) {
diff --git a/inlong-tubemq/tubemq-server/src/main/java/org/apache/inlong/tubemq/server/master/MasterConfig.java b/inlong-tubemq/tubemq-server/src/main/java/org/apache/inlong/tubemq/server/master/MasterConfig.java
index c4b1e5c..7b71725 100644
--- a/inlong-tubemq/tubemq-server/src/main/java/org/apache/inlong/tubemq/server/master/MasterConfig.java
+++ b/inlong-tubemq/tubemq-server/src/main/java/org/apache/inlong/tubemq/server/master/MasterConfig.java
@@ -271,6 +271,26 @@ public class MasterConfig extends AbstractFileConfig {
         this.tlsConfig = this.loadTlsSectConf(iniConf,
                 TBaseConstants.META_DEFAULT_MASTER_TLS_PORT);
         this.zkConfig = loadZKeeperSectConf(iniConf);
+        if (this.port == this.webPort
+                || (tlsConfig.isTlsEnable() && (this.tlsConfig.getTlsPort() == this.webPort))) {
+            throw new IllegalArgumentException(new StringBuilder(512)
+                    .append("Illegal field value configuration, the value of ")
+                    .append("port or tlsPort cannot be the same as the value of webPort!")
+                    .toString());
+        }
+        if (this.port == replicationConfig.getRepNodePort() || (tlsConfig.isTlsEnable()
+                && (this.tlsConfig.getTlsPort() == replicationConfig.getRepNodePort()))) {
+            throw new IllegalArgumentException(new StringBuilder(512)
+                    .append("Illegal field value configuration, the value of ")
+                    .append("port or tlsPort cannot be the same as the value of repNodePort!")
+                    .toString());
+        }
+        if (this.webPort == replicationConfig.getRepNodePort()) {
+            throw new IllegalArgumentException(new StringBuilder(512)
+                    .append("Illegal field value configuration, the value of ")
+                    .append("webPort cannot be the same as the value of repNodePort!")
+                    .toString());
+        }
     }
 
     /**
diff --git a/inlong-tubemq/tubemq-server/src/main/java/org/apache/inlong/tubemq/server/master/metamanage/MetaDataManager.java b/inlong-tubemq/tubemq-server/src/main/java/org/apache/inlong/tubemq/server/master/metamanage/MetaDataManager.java
index d7a8ca5..9a7ba37 100644
--- a/inlong-tubemq/tubemq-server/src/main/java/org/apache/inlong/tubemq/server/master/metamanage/MetaDataManager.java
+++ b/inlong-tubemq/tubemq-server/src/main/java/org/apache/inlong/tubemq/server/master/metamanage/MetaDataManager.java
@@ -42,6 +42,7 @@ import org.apache.inlong.tubemq.server.common.statusdef.ManageStatus;
 import org.apache.inlong.tubemq.server.common.statusdef.TopicStatus;
 import org.apache.inlong.tubemq.server.common.statusdef.TopicStsChgType;
 import org.apache.inlong.tubemq.server.common.utils.ProcessResult;
+import org.apache.inlong.tubemq.server.common.utils.WebParameterUtils;
 import org.apache.inlong.tubemq.server.master.MasterConfig;
 import org.apache.inlong.tubemq.server.master.TMaster;
 import org.apache.inlong.tubemq.server.master.bdbstore.MasterGroupStatus;
@@ -430,8 +431,11 @@ public class MetaDataManager implements Server {
         if (isAddOp) {
             if (metaStoreService.getBrokerConfByBrokerId(entity.getBrokerId()) == null
                     && metaStoreService.getBrokerConfByBrokerIp(entity.getBrokerIp()) == null) {
-                if (metaStoreService.addBrokerConf(entity, sBuffer, result)) {
-                    this.tMaster.getBrokerRunManager().updBrokerStaticInfo(entity);
+                if (WebParameterUtils.isLegallyPortValueSet(entity.getBrokerPort(),
+                        entity.getBrokerTLSPort(), entity.getBrokerWebPort(), sBuffer, result)) {
+                    if (metaStoreService.addBrokerConf(entity, sBuffer, result)) {
+                        this.tMaster.getBrokerRunManager().updBrokerStaticInfo(entity);
+                    }
                 }
             } else {
                 result.setFailResult(DataOpErrCode.DERR_EXISTED.getCode(),
@@ -455,8 +459,12 @@ public class MetaDataManager implements Server {
                         entity.getBrokerTLSPort(), entity.getBrokerWebPort(),
                         entity.getRegionId(), entity.getGroupId(),
                         entity.getManageStatus(), entity.getTopicProps())) {
-                    if (metaStoreService.updBrokerConf(newEntity, sBuffer, result)) {
-                        triggerBrokerConfDataSync(entity.getBrokerId(), sBuffer, result);
+                    if (WebParameterUtils.isLegallyPortValueSet(newEntity.getBrokerPort(),
+                            newEntity.getBrokerTLSPort(), newEntity.getBrokerWebPort(),
+                            sBuffer, result)) {
+                        if (metaStoreService.updBrokerConf(newEntity, sBuffer, result)) {
+                            triggerBrokerConfDataSync(entity.getBrokerId(), sBuffer, result);
+                        }
                     }
                 } else {
                     result.setSuccResult(null);
@@ -1560,52 +1568,6 @@ public class MetaDataManager implements Server {
 
     // //////////////////////////////////////////////////////////////////////////////
 
-    public boolean addClusterDefSetting(BaseEntity opEntity, int brokerPort,
-                                        int brokerTlsPort, int brokerWebPort,
-                                        int maxMsgSizeMB, int qryPriorityId,
-                                        Boolean flowCtrlEnable, int flowRuleCnt,
-                                        String flowCtrlInfo, TopicPropGroup topicProps,
-                                        StringBuilder strBuffer, ProcessResult result) {
-        ClusterSettingEntity newConf =
-                new ClusterSettingEntity(opEntity);
-        newConf.fillDefaultValue();
-        newConf.updModifyInfo(opEntity.getDataVerId(), brokerPort,
-                brokerTlsPort, brokerWebPort, maxMsgSizeMB, qryPriorityId,
-                flowCtrlEnable, flowRuleCnt, flowCtrlInfo, topicProps);
-        return metaStoreService.addClusterConfig(newConf, strBuffer, result);
-    }
-
-    /**
-     * Update cluster default setting
-     *
-     * @return true if success otherwise false
-     */
-    public boolean modClusterDefSetting(BaseEntity opEntity, int brokerPort,
-                                        int brokerTlsPort, int brokerWebPort,
-                                        int maxMsgSizeMB, int qryPriorityId,
-                                        Boolean flowCtrlEnable, int flowRuleCnt,
-                                        String flowCtrlInfo, TopicPropGroup topicProps,
-                                        StringBuilder strBuffer, ProcessResult result) {
-        ClusterSettingEntity curConf =
-                metaStoreService.getClusterConfig();
-        if (curConf == null) {
-            result.setFailResult(DataOpErrCode.DERR_EXISTED.getCode(),
-                    DataOpErrCode.DERR_EXISTED.getDescription());
-            return result.isSuccess();
-        }
-        ClusterSettingEntity newConf = curConf.clone();
-        newConf.updBaseModifyInfo(opEntity);
-        if (newConf.updModifyInfo(opEntity.getDataVerId(), brokerPort,
-                brokerTlsPort, brokerWebPort, maxMsgSizeMB, qryPriorityId,
-                flowCtrlEnable, flowRuleCnt, flowCtrlInfo, topicProps)) {
-            metaStoreService.updClusterConfig(newConf, strBuffer, result);
-        } else {
-            result.setFailResult(DataOpErrCode.DERR_UNCHANGED.getCode(),
-                    DataOpErrCode.DERR_UNCHANGED.getDescription());
-        }
-        return result.isSuccess();
-    }
-
     /**
      * Update cluster default setting
      *
@@ -1616,7 +1578,7 @@ public class MetaDataManager implements Server {
                                              int maxMsgSizeMB, int qryPriorityId,
                                              Boolean flowCtrlEnable, int flowRuleCnt,
                                              String flowCtrlInfo, TopicPropGroup topicProps,
-                                             StringBuilder strBuffer, ProcessResult result) {
+                                             StringBuilder sBuffer, ProcessResult result) {
         ClusterSettingEntity newConf;
         ClusterSettingEntity curConf = metaStoreService.getClusterConfig();
         if (curConf == null) {
@@ -1625,14 +1587,21 @@ public class MetaDataManager implements Server {
             newConf.updModifyInfo(opEntity.getDataVerId(), brokerPort,
                     brokerTlsPort, brokerWebPort, maxMsgSizeMB, qryPriorityId,
                     flowCtrlEnable, flowRuleCnt, flowCtrlInfo, topicProps);
-            metaStoreService.addClusterConfig(newConf, strBuffer, result);
+            if (WebParameterUtils.isLegallyPortValueSet(newConf.getBrokerPort(),
+                    newConf.getBrokerTLSPort(), newConf.getBrokerWebPort(), sBuffer, result)) {
+                metaStoreService.addClusterConfig(newConf, sBuffer, result);
+            }
         } else {
             newConf = curConf.clone();
             newConf.updBaseModifyInfo(opEntity);
             if (newConf.updModifyInfo(opEntity.getDataVerId(), brokerPort,
                     brokerTlsPort, brokerWebPort, maxMsgSizeMB, qryPriorityId,
                     flowCtrlEnable, flowRuleCnt, flowCtrlInfo, topicProps)) {
-                metaStoreService.updClusterConfig(newConf, strBuffer, result);
+                if (WebParameterUtils.isLegallyPortValueSet(newConf.getBrokerPort(),
+                        newConf.getBrokerTLSPort(), newConf.getBrokerWebPort(),
+                        sBuffer, result)) {
+                    metaStoreService.updClusterConfig(newConf, sBuffer, result);
+                }
             } else {
                 result.setSuccResult(null);
             }
diff --git a/inlong-tubemq/tubemq-server/src/main/java/org/apache/inlong/tubemq/server/master/web/handler/WebBrokerConfHandler.java b/inlong-tubemq/tubemq-server/src/main/java/org/apache/inlong/tubemq/server/master/web/handler/WebBrokerConfHandler.java
index cd48f8d..9ec33d9 100644
--- a/inlong-tubemq/tubemq-server/src/main/java/org/apache/inlong/tubemq/server/master/web/handler/WebBrokerConfHandler.java
+++ b/inlong-tubemq/tubemq-server/src/main/java/org/apache/inlong/tubemq/server/master/web/handler/WebBrokerConfHandler.java
@@ -1023,7 +1023,7 @@ public class WebBrokerConfHandler extends AbstractWebHandler {
         String brokerIp = (String) result.getRetData();
         // get brokerId
         if (!WebParameterUtils.getIntParamValue(paramCntr,
-                WebFieldDef.BROKERID, true, 0, 0, sBuffer, result)) {
+                WebFieldDef.BROKERID, false, 0, 0, sBuffer, result)) {
             return result.success;
         }
         int brokerId = (int) result.getRetData();
diff --git a/inlong-tubemq/tubemq-server/src/main/java/org/apache/inlong/tubemq/server/master/web/handler/WebMasterInfoHandler.java b/inlong-tubemq/tubemq-server/src/main/java/org/apache/inlong/tubemq/server/master/web/handler/WebMasterInfoHandler.java
index 071e779..76f0ce8 100644
--- a/inlong-tubemq/tubemq-server/src/main/java/org/apache/inlong/tubemq/server/master/web/handler/WebMasterInfoHandler.java
+++ b/inlong-tubemq/tubemq-server/src/main/java/org/apache/inlong/tubemq/server/master/web/handler/WebMasterInfoHandler.java
@@ -468,17 +468,19 @@ public class WebMasterInfoHandler extends AbstractWebHandler {
 
 
     private StringBuilder buildRetInfo(StringBuilder sBuffer, boolean isNewVer) {
+        int totalCnt = 0;
         ClusterSettingEntity curConf =
                 metaDataManager.getClusterDefSetting(true);
         WebParameterUtils.buildSuccessWithDataRetBegin(sBuffer);
         if (curConf != null) {
+            totalCnt++;
             if (isNewVer) {
                 curConf.toWebJsonStr(sBuffer, true, true);
             } else {
                 curConf.toOldVerFlowCtrlWebJsonStr(sBuffer, true);
             }
         }
-        WebParameterUtils.buildSuccessWithDataRetEnd(sBuffer, 1);
+        WebParameterUtils.buildSuccessWithDataRetEnd(sBuffer, totalCnt);
         return sBuffer;
     }
 }