{"record":{"id":"2bd39b52e2fbbcb0","repo":"alibaba/nacos","slug":"too-long-tenant-over-128","errorCode":null,"errorMessage":"too long tenant, over 128","messagePattern":"too long tenant, over 128","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"config/src/main/java/com/alibaba/nacos/config/server/utils/ParamUtils.java","lineNumber":237,"sourceCode":"            }\n            if (tag.length() > TAG_MAX_LEN) {\n                throw new NacosApiException(HttpStatus.BAD_REQUEST.value(),\n                    ErrorCode.PARAMETER_VALIDATE_ERROR,\n                    \"too long tag, over 16\");\n            }\n        }\n    }\n    \n    /**\n     * Check the tenant for [v1].\n     */\n    public static void checkTenant(String tenant) {\n        if (StringUtils.isNotBlank(tenant)) {\n            if (!isValid(tenant.trim())) {\n                throw new IllegalArgumentException(\"invalid tenant\");\n            }\n            if (tenant.length() > TENANT_MAX_LEN) {\n                throw new IllegalArgumentException(\"too long tenant, over 128\");\n            }\n        }\n    }\n    \n    /**\n     * Check the namespaceId for [v2].\n     */\n    public static void checkTenantV2(String namespaceId) throws NacosApiException {\n        if (StringUtils.isNotBlank(namespaceId)) {\n            if (!isValid(namespaceId.trim())) {\n                throw new NacosApiException(HttpStatus.BAD_REQUEST.value(),\n                    ErrorCode.PARAMETER_VALIDATE_ERROR,\n                    \"invalid namespaceId\");\n            }\n            if (namespaceId.length() > TENANT_MAX_LEN) {\n                throw new NacosApiException(HttpStatus.BAD_REQUEST.value(),\n                    ErrorCode.PARAMETER_VALIDATE_ERROR,\n                    \"too long namespaceId, over 128\");","sourceCodeStart":219,"sourceCodeEnd":255,"githubUrl":"https://github.com/alibaba/nacos/blob/9b989acdf181d00898f2e8839257bb2b2a3cefe3/config/src/main/java/com/alibaba/nacos/config/server/utils/ParamUtils.java#L219-L255","documentation":"Thrown by the v1 ParamUtils.checkTenant(String tenant) as an IllegalArgumentException when tenant.length() exceeds TENANT_MAX_LEN (128). Unchecked runtime exception, no error code/HTTP status. Caps namespace/tenant identifier length for storage keys.","triggerScenarios":"A v1 config operation passing a non-blank tenant longer than 128 characters (after charset check passes).","commonSituations":"Using a generated UUID concatenated with metadata, or a copy-pasted long string as tenant.","solutions":["Shorten the tenant to at most 128 characters.","Use the namespace's short generated id instead of a long descriptive name.","Validate length client-side before calling."],"exampleFix":"// before\nParamUtils.checkTenant(longGeneratedNamespaceString); // > 128\n\n// after\nString tenant = namespaceId; // short generated id, <= 128\nParamUtils.checkTenant(tenant);","handlingStrategy":"validation","validationCode":"boolean validTenantLength(String tenant) {\n    return tenant == null || tenant.length() <= 128;\n}","typeGuard":null,"tryCatchPattern":"try {\n    ParamUtils.checkTenant(tenant);\n} catch (IllegalArgumentException e) {\n    handleInvalidTenant(e.getMessage());\n}","preventionTips":["Use short generated namespace ids (<=128 chars).","Avoid long descriptive names as tenant.","Validate length client-side."],"tags":["config","validation","tenant","namespace","v1","length-limit","illegal-argument"],"backgroundTag":null,"analyzedSha":"9b989acdf181d00898f2e8839257bb2b2a3cefe3","analyzedAt":"2026-08-14T07:17:31.569Z","schemaVersion":2},"datasetVersion":"2026-08-14T10:17:34.591Z"}