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

  1. Provide a non-empty JSON array of Member objects, e.g. [{"ip":"1.2.3.4","port":7848}].
  2. Set Content-Type: application/json so Spring deserializes the body into List<Member>.
  3. 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

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.