alibaba/nacos · warning · NacosApiException
10000
10000
Error message
required parameter 'nodes' is missing
What it means
Thrown by PUT /v3/admin/core/cluster/node/list when the request body (List<Member> nodes) is null or empty. This is a client error: NacosApiException ErrorCode.PARAMETER_MISSING (code 10000), HTTP 400.
Source
Thrown at core/src/main/java/com/alibaba/nacos/core/controller/v3/NacosClusterControllerV3.java:114
"Illegal state: " + state);
}
}
return Result.success(nacosClusterOperationService.listNodes(address, nodeState));
}
/**
* Other nodes return their own metadata information.
*
* @param nodes List of {@link Member}
* @return {@link RestResult}
*/
@Since("3.0.0")
@PutMapping(value = "/node/list")
@Secured(action = ActionTypes.WRITE, resource = NACOS_ADMIN_CORE_CONTEXT_V3
+ "/cluster", signType = SignType.CONSOLE, apiType = ApiType.ADMIN_API)
public Result<Boolean> updateNodes(@RequestBody List<Member> nodes) throws NacosApiException {
if (nodes == null || nodes.isEmpty()) {
throw new NacosApiException(HttpStatus.BAD_REQUEST.value(), ErrorCode.PARAMETER_MISSING,
"required parameter 'nodes' is missing");
}
return Result.success(nacosClusterOperationService.updateNodes(nodes));
}
/**
* Addressing mode switch.
*
* @param request {@link LookupUpdateRequest}
* @return {@link RestResult}
*/
@Since("3.0.0")
@PutMapping(value = "/lookup")
@Secured(action = ActionTypes.WRITE, resource = NACOS_ADMIN_CORE_CONTEXT_V3
+ "/cluster", signType = SignType.CONSOLE, apiType = ApiType.ADMIN_API)
public Result<Boolean> updateLookup(LookupUpdateRequest request) throws NacosException {
if (request == null || request.getType() == null) {
throw new NacosApiException(HttpStatus.BAD_REQUEST.value(), ErrorCode.PARAMETER_MISSING,View on GitHub (pinned to 9b989acdf1)
Solutions
- Provide a non-empty JSON array of Member objects, e.g. [{"ip":"1.2.3.4","port":7848}].
- Set Content-Type: application/json so Spring deserializes the body into List<Member>.
- Verify each Member has the required address/port fields.
Example fix
// before
PUT /v3/admin/core/cluster/node/list
[]
// after
PUT /v3/admin/core/cluster/node/list
[{"ip":"10.0.0.5","port":7848}] Defensive patterns
Strategy: validation
Validate before calling
if (nodes == null || nodes.isEmpty()) {
throw new IllegalArgumentException("nodes must be a non-empty list");
} Try / catch
try {
client.updateNodes(members);
} catch (NacosApiException e) {
if (e.getErrCode() == ErrorCode.PARAMETER_MISSING.getCode()) { /* empty body */ }
} Prevention
- Always send a non-empty JSON array of Member objects.
- Set Content-Type: application/json on the PUT.
When it happens
Trigger: Sending the PUT with no body, an empty JSON array '[]', or a body that fails to deserialize as List<Member> (yielding null). The controller explicitly rejects null/empty before delegating to nacosClusterOperationService.updateNodes.
Common situations: Console/UI sending an empty selection; a script that posts an empty list; a JSON binding failure when the Content-Type is wrong or the payload shape is incorrect.
Related errors
AI-assisted analysis of alibaba/nacos@9b989acdf1 (2026-08-14).
Data as JSON: /api/errors/b803a03ac68d4053.
Report an issue: GitHub.