{"record":{"id":"2832c724a6c3c64d","repo":"alibaba/nacos","slug":"400-2832c7","errorCode":"400","errorMessage":"no server available","messagePattern":"no server available","errorType":"exception","errorClass":"NacosException","httpStatus":null,"severity":"error","filePath":"client/src/main/java/com/alibaba/nacos/client/ai/remote/AiHttpClientProxy.java","lineNumber":770,"sourceCode":"        }\n    }\n    \n    private String buildUrl(String serverAddr, String relativePath) {\n        if (!serverAddr.startsWith(HTTP_PREFIX) && !serverAddr.startsWith(HTTPS_PREFIX)) {\n            serverAddr = (ENABLE_HTTPS ? HTTPS_PREFIX : HTTP_PREFIX) + serverAddr;\n        }\n        String contextPath = serverListManager.getContextPath();\n        return serverAddr + ContextPathUtil.normalizeContextPath(contextPath) + relativePath;\n    }\n    \n    /**\n     * Request API returning String body with headers exposed, propagating 304 immediately.\n     */\n    private HttpRestResult<String> reqApiStringWithHeader(String api,\n        Map<String, String> params, RequestResource resource) throws NacosException {\n        List<String> servers = serverListManager.getServerList();\n        if (servers.isEmpty()) {\n            throw new NacosException(NacosException.INVALID_PARAM, \"no server available\");\n        }\n        \n        NacosException exception = new NacosException();\n        int index = ThreadLocalRandom.current().nextInt(servers.size());\n        \n        for (int i = 0; i < Math.max(servers.size(), MAX_RETRY); i++) {\n            String server = servers.get(index % servers.size());\n            try {\n                return callServerStringWithHeader(api, params, server, resource);\n            } catch (NacosException e) {\n                if (NacosException.NOT_MODIFIED == e.getErrCode()) {\n                    throw e;\n                }\n                exception = e;\n                if (LOGGER.isDebugEnabled()) {\n                    LOGGER.debug(\"Request {} to server {} failed.\", api, server, e);\n                }\n            }","sourceCodeStart":752,"sourceCodeEnd":788,"githubUrl":"https://github.com/alibaba/nacos/blob/9b989acdf181d00898f2e8839257bb2b2a3cefe3/client/src/main/java/com/alibaba/nacos/client/ai/remote/AiHttpClientProxy.java#L752-L788","documentation":"Thrown by AiHttpClientProxy.reqApiStringWithHeader() with code INVALID_PARAM (400) when the server list is empty. This variant is used by queryAgentSpec() which fetches AgentSpec JSON with response headers (X-Nacos-AgentSpec-Md5, X-Nacos-AgentSpec-Resolved-Version). No network request is attempted — pre-flight failure.","triggerScenarios":"Calling queryAgentSpec() when serverListManager.getServerList() returns an empty list. Same root cause as errors 621/623.","commonSituations":"Missing serverAddr in client properties. Server list initialization failed. Client started before any server was available.","solutions":["Set serverAddr in properties before creating the AI service.","Verify at least one Nacos server node is reachable.","Check ServerListManager logs for server-list population failures."],"exampleFix":"// before\nProperties props = new Properties();\nprops.setProperty(\"namespace\", \"dev\");\n// forgot serverAddr\nNacosAiFactory.createAiService(props).queryAgentSpec(\"spec\", null, null, null);\n\n// after\nprops.setProperty(PropertyKeyConst.SERVER_ADDR, \"nacos.example.com:8848\");\nNacosAiFactory.createAiService(props).queryAgentSpec(\"spec\", null, null, null);","handlingStrategy":"validation","validationCode":"if (StringUtils.isBlank(properties.getProperty(PropertyKeyConst.SERVER_ADDR))) {\n    throw new IllegalStateException(\"serverAddr must be configured\");\n}\nNacosAiFactory.createAiService(properties).queryAgentSpec(name, ver, label, md5);","typeGuard":null,"tryCatchPattern":"try {\n    aiService.queryAgentSpec(name, ver, label, md5);\n} catch (NacosException e) {\n    if (e.getErrCode() == NacosException.INVALID_PARAM && \"no server available\".equals(e.getErrMsg())) {\n        log.error(\"No Nacos server configured\");\n    }\n}","preventionTips":["Always set serverAddr in client properties.","Run a startup connectivity check."],"tags":["nacos","ai-client","http","server-list","agentspec-query","configuration"],"backgroundTag":null,"analyzedSha":"9b989acdf181d00898f2e8839257bb2b2a3cefe3","analyzedAt":"2026-08-14T07:17:31.569Z","schemaVersion":2},"datasetVersion":"2026-08-14T10:17:34.591Z"}