private boolean requestPubKeyFromManager(ProcessResult procResult) {
        // check cache failure
        String qryResult = getManagerQryResultInFailStatus(false);
        if (qryResult != null) {
            procResult.setFailResult(ErrorCode.FREQUENT_RMT_FAILURE_VISIT,
                    "Query fail(" + qryResult + ") just now, retry later!");
        }
        // request meta info from manager
        List<BasicNameValuePair> params = buildPubKeyQueryParams();
        logger.debug("ConfigManager({}) request pubkey to manager({}), param={}",
                this.callerId, this.encryptConfigVisitUrl, params);
        if (!requestConfiguration(false, this.encryptConfigVisitUrl, params, procResult)) {
            return false;
        }
        String content = (String) procResult.getRetData();
        logger.debug("ConfigManager({}) received pubkey from manager({}), result={}",
                this.callerId, this.encryptConfigVisitUrl, content);
        String errorMsg;
        JsonObject pubKeyConf;
        try {
            pubKeyConf = JsonParser.parseString(content).getAsJsonObject();
        } catch (Throwable ex) {
            if (parseCounter.shouldPrint()) {
                logger.warn("ConfigManager({}) parse failure, userName={}, config={}!",
                        this.callerId, this.mgrConfig.getRptUserName(), content);
            }
            errorMsg = "parse pubkey failure:" + ex.getMessage();
            bookManagerQryFailStatus(false, errorMsg);
            return procResult.setFailResult(
                    ErrorCode.PARSE_RMT_CONTENT_FAILURE, errorMsg);
        }
        if (pubKeyConf == null) {
            errorMsg = "No public key information";
            bookManagerQryFailStatus(false, errorMsg);
            return procResult.setFailResult(ErrorCode.PARSE_RMT_CONTENT_IS_NULL);
        }
        try {
            if (!pubKeyConf.has("resultCode")) {
                if (parseCounter.shouldPrint()) {
                    logger.warn("ConfigManager({}) config failure: resultCode field not exist, userName={}, config={}!",
                            this.callerId, this.mgrConfig.getRptUserName(), content);
                }
                throw new Exception("resultCode field not exist");
            }
            int resultCode = pubKeyConf.get("resultCode").getAsInt();
            if (resultCode != 0) {
                if (parseCounter.shouldPrint()) {
                    logger.warn("ConfigManager({}) config failure: resultCode != 0, userName={}, config={}!",
                            this.callerId, this.mgrConfig.getRptUserName(), content);
                }
                throw new Exception("resultCode != 0!");
            }
            if (!pubKeyConf.has("resultData")) {
                if (parseCounter.shouldPrint()) {
                    logger.warn("ConfigManager({}) config failure: resultData field not exist, userName={}, config={}!",
                            this.callerId, this.mgrConfig.getRptUserName(), content);
                }
                throw new Exception("resultData field not exist");
            }
            JsonObject resultData = pubKeyConf.get("resultData").getAsJsonObject();
            if (resultData != null) {
                String publicKey = resultData.get("publicKey").getAsString();
                if (StringUtils.isBlank(publicKey)) {
                    if (parseCounter.shouldPrint()) {
                        logger.warn("ConfigManager({}) config failure: publicKey is blank, userName={}, config={}!",
                                this.callerId, this.mgrConfig.getRptUserName(), content);
                    }
                    throw new Exception("publicKey is blank!");
                }
                String username = resultData.get("username").getAsString();
                if (StringUtils.isBlank(username)) {
                    if (parseCounter.shouldPrint()) {
                        logger.warn("ConfigManager({}) config failure: username is blank, userName={}, config={}!",
                                this.callerId, this.mgrConfig.getRptUserName(), content);
                    }
                    throw new Exception("username is blank!");
                }
                String versionStr = resultData.get("version").getAsString();
                if (StringUtils.isBlank(versionStr)) {
                    if (parseCounter.shouldPrint()) {
                        logger.warn("ConfigManager({}) config failure: version is blank, userName={}, config={}!",
                                this.callerId, this.mgrConfig.getRptUserName(), content);
                    }
                    throw new Exception("version is blank!");
                }
                rmvManagerQryFailStatus(false);
                return procResult.setSuccess(new EncryptConfigEntry(username, versionStr, publicKey));
            }
            throw new Exception("resultData value is null!");
        } catch (Throwable ex) {
            bookManagerQryFailStatus(false, ex.getMessage());
            return procResult.setFailResult(ErrorCode.PARSE_ENCRYPT_META_EXCEPTION, ex.getMessage());
        }
    }
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