{"record":{"id":"ec551a7313c3aba3","repo":"alibaba/nacos","slug":"invalid-param-ec551a","errorCode":"INVALID_PARAM","errorMessage":"no server available","messagePattern":"no server available","errorType":"exception","errorClass":"NacosException","httpStatus":null,"severity":"critical","filePath":"client/src/main/java/com/alibaba/nacos/client/ai/remote/AiHttpClientProxy.java","lineNumber":449,"sourceCode":"    \n    private void putJson(Map<String, String> form, String name, Object value) {\n        if (value != null) {\n            form.put(name, JsonUtils.toJson(value));\n        }\n    }\n    \n    private RequestResource buildAgentResource(String agentName) {\n        return RequestResource.aiBuilder().setNamespace(namespaceId)\n            .setGroup(Constants.DEFAULT_GROUP)\n            .setResource(agentName == null ? StringUtils.EMPTY : agentName).build();\n    }\n    \n    private String requestAgentApi(String api, AgentHttpMethod method,\n        List<QueryParameter> parameters, Map<String, String> form, RequestResource resource)\n        throws NacosException {\n        List<String> servers = serverListManager.getServerList();\n        if (servers.isEmpty()) {\n            throw new NacosException(NacosException.INVALID_PARAM, \"no server available\");\n        }\n        NacosException exception = new NacosException();\n        int index = ThreadLocalRandom.current().nextInt(servers.size());\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 callAgentServer(api, method, parameters, form, server, resource);\n            } catch (NacosException e) {\n                exception = e;\n            }\n            index = (index + 1) % servers.size();\n        }\n        throw new NacosException(exception.getErrCode(),\n            \"Failed to request API: \" + api + \" after all servers(\" + servers + \") tried: \"\n                + exception.getMessage());\n    }\n    \n    private String callAgentServer(String api, AgentHttpMethod method,","sourceCodeStart":431,"sourceCodeEnd":467,"githubUrl":"https://github.com/alibaba/nacos/blob/9b989acdf181d00898f2e8839257bb2b2a3cefe3/client/src/main/java/com/alibaba/nacos/client/ai/remote/AiHttpClientProxy.java#L431-L467","documentation":"Thrown by AiHttpClientProxy.requestAgentApi when the server list managed by serverListManager is empty. Before attempting any agent HTTP call the client needs at least one target server; an empty list is treated as INVALID_PARAM (misconfiguration) rather than a network error. This path serves agent discovery/registry REST calls.","triggerScenarios":"Calling an agent API (requestAgentApi, used by discovery/registry HTTP operations) when serverListManager.getServerList() returns an empty list - server list never populated, or all servers removed.","commonSituations":"Server address property (serverAddr) not set or empty; server list fetch from the endpoint failed and yielded nothing; client initialized with a blank server list; fixed server list property malformed.","solutions":["Provide a valid, non-empty serverAddr when building the AI client (e.g. Properties.SERVER_ADDRESSES).","Verify the server list endpoint (if using a discovery endpoint) returns at least one healthy server.","Check the server list property spelling/format; ensure it parses into addresses."],"exampleFix":"// before\nProperties props = new Properties();\n// serverAddr omitted\nNacosAiService service = NacosAiServiceBuilder.build(props); // later: no server available\n// after\nprops.setProperty(PropertyKeyConst.SERVER_ADDR, \"127.0.0.1:8848\");\nNacosAiService service = NacosAiServiceBuilder.build(props);","handlingStrategy":"validation","validationCode":"if (serverListManager.getServerList().isEmpty()) {\n    throw new IllegalStateException(\"No Nacos servers configured; set serverAddr\");\n}","typeGuard":"!serverListManager.getServerList().isEmpty()","tryCatchPattern":"try {\n    client.requestAgentApi(...);\n} catch (NacosException e) {\n    if (e.getErrCode() == NacosException.INVALID_PARAM && \"no server available\".equals(e.getMessage())) {\n        // fix serverAddr / server-list configuration\n    }\n    throw e;\n}","preventionTips":["Always set a non-empty serverAddr when building the AI client.","Validate the server list at startup and fail fast if empty.","Check the server-list endpoint returns addresses in endpoint mode."],"tags":["ai","http","server-list","config","invalid-param","agent-api"],"backgroundTag":null,"analyzedSha":"9b989acdf181d00898f2e8839257bb2b2a3cefe3","analyzedAt":"2026-08-14T07:17:31.569Z","schemaVersion":2},"datasetVersion":"2026-08-14T10:17:34.591Z"}