{"record":{"id":"c3e143635df7d1b0","repo":"alibaba/nacos","slug":"version-cannot-be-blank","errorCode":null,"errorMessage":"Version cannot be blank","messagePattern":"Version cannot be blank","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"api/src/main/java/com/alibaba/nacos/api/ai/model/agentspecs/AgentSpecUtils.java","lineNumber":106,"sourceCode":"        } else {\n            return processedName;\n        }\n    }\n    \n    /**\n     * Build the Nacos Config group for a specific AgentSpec version.\n     *\n     * @param agentSpecName name of AgentSpec\n     * @param version       version string, e.g. \"v1\"\n     * @return config group string, e.g. \"agentspec__myworker__v1\"\n     * @throws IllegalArgumentException if agentSpecName or version is blank\n     */\n    public static String buildAgentSpecVersionGroup(String agentSpecName, String version) {\n        if (StringUtils.isBlank(agentSpecName)) {\n            throw new IllegalArgumentException(\"AgentSpec name cannot be blank\");\n        }\n        if (StringUtils.isBlank(version)) {\n            throw new IllegalArgumentException(\"Version cannot be blank\");\n        }\n        return AGENTSPEC_GROUP_PREFIX\n            + NacosAiConfigKeyCodec.encodeVersionedGroupSegment(agentSpecName)\n            + DOUBLE_UNDERSCORE + NacosAiConfigKeyCodec.encodeVersionedGroupSegment(version);\n    }\n    \n}\n","sourceCodeStart":88,"sourceCodeEnd":114,"githubUrl":"https://github.com/alibaba/nacos/blob/9b989acdf181d00898f2e8839257bb2b2a3cefe3/api/src/main/java/com/alibaba/nacos/api/ai/model/agentspecs/AgentSpecUtils.java#L88-L114","documentation":"AgentSpecUtils.buildAgentSpecVersionGroup throws IllegalArgumentException when the version parameter is blank (null, empty, or whitespace-only). The version is embedded in the group string and must be a non-empty identifier.","triggerScenarios":"Calling buildAgentSpecVersionGroup with a null or empty version. Happens when version is derived from a default that was never set, or when the caller assumes version is optional.","commonSituations":"A new AgentSpec version was not assigned before calling buildAgentSpecVersionGroup. A UI form leaves the version field empty. A migration script processes records with missing version data.","solutions":["Validate version is non-blank before calling buildAgentSpecVersionGroup.","Default to a sensible version (e.g. 'v1' or 'latest') if your business logic allows it.","Enforce version presence at the API entry point."],"exampleFix":"// before\nString group = AgentSpecUtils.buildAgentSpecVersionGroup(\"myAgent\", null);\n\n// after\nString version = StringUtils.isBlank(reqVersion) ? \"v1\" : reqVersion;\nString group = AgentSpecUtils.buildAgentSpecVersionGroup(\"myAgent\", version);","handlingStrategy":"validation","validationCode":"if (StringUtils.isBlank(version)) {\n    throw new IllegalArgumentException(\"version is required\");\n}","typeGuard":"public static boolean isVersionValid(String version) {\n    return version != null && !version.trim().isEmpty();\n}","tryCatchPattern":"try {\n    group = AgentSpecUtils.buildAgentSpecVersionGroup(name, version);\n} catch (IllegalArgumentException e) {\n    if (e.getMessage().contains(\"Version cannot be blank\")) {\n        return badRequest(\"version is required\");\n    }\n    throw e;\n}","preventionTips":["Default or validate version before calling group builders.","Enforce version presence at the API entry point.","Use Optional or defaults for version when business logic allows."],"tags":["agentspec","validation","blank","config-group","version"],"backgroundTag":null,"analyzedSha":"9b989acdf181d00898f2e8839257bb2b2a3cefe3","analyzedAt":"2026-08-14T07:17:31.569Z","schemaVersion":2},"datasetVersion":"2026-08-14T10:17:34.591Z"}