{"record":{"id":"29b2b82f552ccbab","repo":"alibaba/nacos","slug":"invalid-input-for-limited-urls","errorCode":null,"errorMessage":"invalid input for limited urls","messagePattern":"invalid input for limited urls","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":400,"severity":"error","filePath":"naming/src/main/java/com/alibaba/nacos/naming/misc/SwitchManager.java","lineNumber":251,"sourceCode":"                \n                tempSwitchDomain.setDisableAddIP(disableAddIp);\n            }\n            \n            if (entry.equals(SwitchEntry.SEND_BEAT_ONLY)) {\n                boolean sendBeatOnly = Boolean.parseBoolean(value);\n                \n                tempSwitchDomain.setSendBeatOnly(sendBeatOnly);\n            }\n            \n            if (entry.equals(SwitchEntry.LIMITED_URL_MAP)) {\n                Map<String, Integer> limitedUrlMap = new HashMap<>(16);\n                \n                if (!StringUtils.isEmpty(value)) {\n                    String[] entries = value.split(\",\");\n                    for (String each : entries) {\n                        String[] parts = each.split(\":\");\n                        if (parts.length < 2) {\n                            throw new IllegalArgumentException(\"invalid input for limited urls\");\n                        }\n                        \n                        String limitedUrl = parts[0];\n                        if (StringUtils.isEmpty(limitedUrl)) {\n                            throw new IllegalArgumentException(\n                                \"url can not be empty, url: \" + limitedUrl);\n                        }\n                        \n                        int statusCode = Integer.parseInt(parts[1]);\n                        if (statusCode <= 0) {\n                            throw new IllegalArgumentException(\n                                \"illegal normal status code: \" + statusCode);\n                        }\n                        \n                        limitedUrlMap.put(limitedUrl, statusCode);\n                        \n                    }\n                    ","sourceCodeStart":233,"sourceCodeEnd":269,"githubUrl":"https://github.com/alibaba/nacos/blob/9b989acdf181d00898f2e8839257bb2b2a3cefe3/naming/src/main/java/com/alibaba/nacos/naming/misc/SwitchManager.java#L233-L269","documentation":"Thrown when entry is 'limitedUrlMap' and a comma-separated entry lacks the ':' separator, so parts.length < 2. Each limited-URL entry must be 'url:statusCode'. This map configures URLs that return a specific status code (rate-limiting / circuit-breaking).","triggerScenarios":"PUT /v3/admin/ns/operator/switches with entry=limitedUrlMap and value containing an entry without a colon, e.g. value='/nacos' or value='/nacos:403,/health' (second entry missing colon).","commonSituations":"Forgetting the ':statusCode' suffix on one or more entries, or using a different delimiter.","solutions":["Format each entry as 'url:statusCode', comma-separated, e.g. '/nacos:403,/health:200'.","Ensure every entry has exactly one colon separating URL and status code."],"exampleFix":"// before\nPUT /v3/admin/ns/operator/switches?entry=limitedUrlMap&value=/nacos\n// after\nPUT /v3/admin/ns/operator/switches?entry=limitedUrlMap&value=/nacos:403","handlingStrategy":"validation","validationCode":"for (String entry : value.split(\",\")) {\n    String[] parts = entry.split(\":\");\n    if (parts.length < 2) {\n        throw new IllegalArgumentException(\"Each limitedUrl entry must be 'url:statusCode'\");\n    }\n}","typeGuard":"function isValidLimitedUrlMap(value: string): boolean {\n  return value.split(',').every(e => {\n    const parts = e.split(':');\n    return parts.length >= 2 && parts[0].length > 0;\n  });\n}","tryCatchPattern":"try {\n  operatorV2Impl.updateSwitch(\"limitedUrlMap\", value, debug);\n} catch (NacosApiException e) {\n  if (e.getMessage().contains(\"invalid input\")) {\n    // re-format value with proper url:code pairs\n  }\n}","preventionTips":["Always format as 'url:statusCode' per entry, comma-separated.","Validate each entry has a colon before sending."],"tags":["naming","switch","validation","limited-url"],"backgroundTag":null,"analyzedSha":"9b989acdf181d00898f2e8839257bb2b2a3cefe3","analyzedAt":"2026-08-14T07:17:31.569Z","schemaVersion":2},"datasetVersion":"2026-08-14T10:17:34.591Z"}