{"record":{"id":"777169f912561b8b","repo":"apache/pulsar","slug":"unable-to-parse-namespaces-parameter-list","errorCode":null,"errorMessage":"unable to parse namespaces parameter list: ","messagePattern":"unable to parse namespaces parameter list: ","errorType":"validation","errorClass":"ParameterException","httpStatus":null,"severity":"error","filePath":"pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdNamespaceIsolationPolicy.java","lineNumber":186,"sourceCode":"    }\n\n    private List<String> validateList(List<String> list) {\n        return list.stream()\n                .filter(StringUtils::isNotEmpty)\n                .collect(Collectors.toList());\n    }\n\n    private NamespaceIsolationData createNamespaceIsolationData(List<String> namespaces,\n                                                                List<String> primary,\n                                                                List<String> secondary,\n                                                                String autoFailoverPolicyTypeName,\n                                                                Map<String, String> autoFailoverPolicyParams,\n                                                                NamespaceIsolationPolicyUnloadScope unload) {\n\n        // validate\n        namespaces = validateList(namespaces);\n        if (namespaces.isEmpty()) {\n            throw new ParameterException(\"unable to parse namespaces parameter list: \" + namespaces);\n        }\n\n        primary = validateList(primary);\n        if (primary.isEmpty()) {\n            throw new ParameterException(\"unable to parse primary parameter list: \" + namespaces);\n        }\n\n        secondary = validateList(secondary);\n\n        // System.out.println(\"namespaces = \" + namespaces);\n        // System.out.println(\"primary = \" + primary);\n        // System.out.println(\"secondary = \" + secondary);\n        // System.out.println(\"autoFailoverPolicyTypeName = \" + autoFailoverPolicyTypeName);\n        // System.out.println(\"autoFailoverPolicyParams = \" + autoFailoverPolicyParams);\n\n        NamespaceIsolationData.Builder nsIsolationDataBuilder = NamespaceIsolationData.builder();\n\n        if (namespaces != null) {","sourceCodeStart":168,"sourceCodeEnd":204,"githubUrl":"https://github.com/apache/pulsar/blob/820761864ed8e2a7d2e52dd9763ad2ae117c1395/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdNamespaceIsolationPolicy.java#L168-L204","documentation":"Thrown by the pulsar-admin CLI (createNamespaceIsolationData) when the --namespaces option parses to an empty list after validateList() processing. Namespace isolation policies require at least one namespace to match, so an empty list is rejected before any admin API call is made. It is a client-side argument validation error (JCommander ParameterException), not a broker error.","triggerScenarios":"Running `pulsar-admin namespaces-isolation-policy create` with --namespaces omitted, or supplied only with empty/duplicate separators (e.g. `--namespaces ''` or `--namespaces ,`) so the comma-split+validateList result is empty.","commonSituations":"Shell variables holding namespace lists that are empty; quoting mistakes that swallow the value; copy-pasted examples where the namespaces option was dropped; scripting where a templated value renders blank.","solutions":["Pass at least one namespace with --namespaces, e.g. --namespaces my-tenant/ns1","For multiple namespaces use a comma-separated list: --namespaces 'tenant/ns1,tenant/ns2'","Verify the shell variable containing the list is non-empty before invoking the CLI","Check for accidental blank quotes or a trailing/duplicate comma that validateList strips, leaving nothing"],"exampleFix":"// before\npulsar-admin ns-isolation-policy create policy1 --namespaces '' --primary 'my-tenant/ns1[0-9]' ...\n// after\npulsar-admin ns-isolation-policy create policy1 --namespaces 'my-tenant/ns[0-9]' --primary 'my-tenant/ns1[0-9]' ...","handlingStrategy":"validation","validationCode":"// shell check before invoking the CLI\nif [ -z \"$NS_LIST\" ]; then echo \"--namespaces must contain at least one namespace\" >&2; exit 1; fi\n# or in Java, before calling createNamespaceIsolationData:\nif (validateList(namespaces).isEmpty()) { throw new IllegalArgumentException(\"namespaces required\"); }","typeGuard":null,"tryCatchPattern":"// Java\ntry {\n    admin.namespacesIsolationPolicies().createNamespaceIsolationPolicy(name, data);\n} catch (org.jcommander.ParameterException | IllegalArgumentException e) {\n    // treat as invalid input: log and abort, do not retry\n}","preventionTips":["Always pass a non-empty comma-separated --namespaces value","Quote namespace regex lists in shell","Validate list variables are populated before composing the command"],"tags":["cli","argument-validation","pulsar-admin"],"backgroundTag":"invalid-cli-arguments","analyzedSha":"820761864ed8e2a7d2e52dd9763ad2ae117c1395","analyzedAt":"2026-09-06T00:14:20.138Z","contentChangedAt":"2026-09-06T00:14:20.138Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}