protected boolean getProxyConfigEntry(boolean fromManager, String strRet, ProcessResult procResult) {
        DataProxyNodeResponse proxyNodeConfig;
        if (fromManager) {
            ProxyClusterConfig clusterConfig;
            try {
                clusterConfig = gson.fromJson(strRet, ProxyClusterConfig.class);
            } catch (Throwable ex) {
                if (parseCounter.shouldPrint()) {
                    logger.warn("ConfigManager({}) parse exception, groupId={}, config={}",
                            this.callerId, mgrConfig.getInlongGroupId(), strRet, ex);
                }
                return procResult.setFailResult(
                        ErrorCode.PARSE_RMT_CONTENT_FAILURE, "parse failure:" + ex.getMessage());
            }
            if (clusterConfig == null) {
                return procResult.setFailResult(ErrorCode.PARSE_RMT_CONTENT_IS_NULL);
            }
            if (!clusterConfig.isSuccess()) {
                return procResult.setFailResult(
                        ErrorCode.RMT_RETURN_ERROR, clusterConfig.getErrMsg());
            }
            if (clusterConfig.getData() == null) {
                return procResult.setFailResult(ErrorCode.META_FIELD_DATA_IS_NULL);
            }
            proxyNodeConfig = clusterConfig.getData();
            if (proxyNodeConfig.getNodeList() == null) {
                return procResult.setFailResult(ErrorCode.META_FIELD_NODE_LIST_NULL);
            }
        } else {
            try {
                proxyNodeConfig = gson.fromJson(strRet, DataProxyNodeResponse.class);
            } catch (Throwable ex) {
                if (parseCounter.shouldPrint()) {
                    logger.warn("ConfigManager({}) parse local file exception, groupId={}, config={}",
                            this.callerId, mgrConfig.getInlongGroupId(), strRet, ex);
                }
                return procResult.setFailResult(
                        ErrorCode.PARSE_FILE_CONTENT_FAILURE, "parse failure:" + ex.getMessage());
            }
            if (proxyNodeConfig == null) {
                return procResult.setFailResult(ErrorCode.PARSE_FILE_CONTENT_IS_NULL);
            }
            if (proxyNodeConfig.getNodeList() == null) {
                return procResult.setFailResult(ErrorCode.META_FIELD_NODE_LIST_NULL);
            }
        }
        // parse nodeList
        List<DataProxyNodeInfo> nodeList = proxyNodeConfig.getNodeList();
        if (CollectionUtils.isEmpty(nodeList)) {
            return procResult.setFailResult(ErrorCode.META_NODE_LIST_IS_EMPTY);
        }
        HostInfo tmpHostInfo;
        Map<String, HostInfo> hostMap = new HashMap<>();
        for (DataProxyNodeInfo proxy : nodeList) {
            if (ObjectUtils.isEmpty(proxy.getId())
                    || StringUtils.isEmpty(proxy.getIp())
                    || ObjectUtils.isEmpty(proxy.getPort())
                    || proxy.getPort() < 0) {
                if (exptCounter.shouldPrint()) {
                    logger.warn("Invalid proxy node: groupId={}, id={}, ip={}, port={}",
                            mgrConfig.getInlongGroupId(), proxy.getId(), proxy.getIp(), proxy.getPort());
                }
                continue;
            }
            tmpHostInfo = new HostInfo(proxy.getIp(), proxy.getPort());
            hostMap.put(tmpHostInfo.getReferenceName(), tmpHostInfo);
        }
        if (hostMap.isEmpty()) {
            return procResult.setFailResult(ErrorCode.NODE_LIST_RECORD_INVALID);
        }
        // parse clusterId
        int clusterId = -1;
        if (ObjectUtils.isNotEmpty(proxyNodeConfig.getClusterId())) {
            clusterId = proxyNodeConfig.getClusterId();
        }
        // parse load
        int load = SdkConsts.LOAD_THRESHOLD;
        if (ObjectUtils.isNotEmpty(proxyNodeConfig.getLoad())) {
            load = proxyNodeConfig.getLoad() > 200 ? 200 : (Math.max(proxyNodeConfig.getLoad(), 0));
        }
        // parse isIntranet
        boolean isIntranet = true;
        if (ObjectUtils.isNotEmpty(proxyNodeConfig.getIsIntranet())) {
            isIntranet = proxyNodeConfig.getIsIntranet() == 1;
        }
        // parse isSwitch
        int isSwitch = 0;
        if (ObjectUtils.isNotEmpty(proxyNodeConfig.getIsSwitch())) {
            isSwitch = proxyNodeConfig.getIsSwitch();
        }
        // build ProxyConfigEntry
        ProxyConfigEntry proxyEntry = new ProxyConfigEntry();
        proxyEntry.setClusterId(clusterId);
        proxyEntry.setGroupId(mgrConfig.getInlongGroupId());
        proxyEntry.setInterVisit(isIntranet);
        proxyEntry.setHostMap(hostMap);
        proxyEntry.setSwitchStat(isSwitch);
        proxyEntry.setLoad(load);
        proxyEntry.setMaxPacketLength(
                proxyNodeConfig.getMaxPacketLength() != null ? proxyNodeConfig.getMaxPacketLength() : -1);
        return procResult.setSuccess(proxyEntry);
    }
try to read cache of proxy entry

@return read result
inlong-sdk/dataproxy-sdk/src/main/java/org/apache/inlong/sdk/dataproxy/config/ProxyConfigManager.java