{"record":{"id":"8dc5d5a92cad957a","repo":"apache/pulsar","slug":"must-specify-num-partitions-or-num-partitions-0","errorCode":null,"errorMessage":"Must specify num-partitions or num-partitions > 0 for partitioned topic type.","messagePattern":"Must specify num-partitions or num-partitions > 0 for partitioned topic type\\.","errorType":"validation","errorClass":"ParameterException","httpStatus":null,"severity":"error","filePath":"pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdNamespaces.java","lineNumber":663,"sourceCode":"        private Integer defaultNumPartitions = null;\n\n        @Override\n        void run() throws PulsarAdminException {\n            String namespace = validateNamespace(namespaceName);\n            type = type.toLowerCase().trim();\n\n            if (enable == disable) {\n                throw new ParameterException(\"Need to specify either --enable or --disable\");\n            }\n            if (enable) {\n                if (!TopicType.isValidTopicType(type)) {\n                    throw new ParameterException(\"Must specify type of topic to be created. \"\n                            + \"Possible values: (partitioned, non-partitioned)\");\n                }\n\n                if (TopicType.PARTITIONED.toString().equals(type)\n                        && (defaultNumPartitions == null || defaultNumPartitions <= 0)) {\n                    throw new ParameterException(\"Must specify num-partitions or num-partitions > 0 \"\n                            + \"for partitioned topic type.\");\n                }\n            }\n            getAdmin().namespaces().setAutoTopicCreation(namespace,\n                    AutoTopicCreationOverride.builder()\n                            .allowAutoTopicCreation(enable)\n                            .topicType(type)\n                            .defaultNumPartitions(defaultNumPartitions)\n                            .build());\n        }\n    }\n\n    @Command(description = \"Get autoTopicCreation info for a namespace\")\n    private class GetAutoTopicCreation extends CliCommand {\n        @Parameters(description = \"tenant/namespace\", arity = \"1\")\n        private String namespaceName;\n\n        @Override","sourceCodeStart":645,"sourceCodeEnd":681,"githubUrl":"https://github.com/apache/pulsar/blob/820761864ed8e2a7d2e52dd9763ad2ae117c1395/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdNamespaces.java#L645-L681","documentation":"Thrown when --enable --type partitioned is given but --default-num-partitions is missing, zero, or negative. Partitioned auto-creation requires a valid positive partition count, so the override is rejected before calling setAutoTopicCreation.","triggerScenarios":"Running `set-auto-topic-creation --enable --type partitioned` without --default-num-partitions, or with a value <= 0; non-partitioned type bypasses this check entirely.","commonSituations":"Assuming the broker default applies; scripting where the partitions variable is empty (parses as 0/null); copying the non-partitioned invocation and switching type without adding partitions.","solutions":["Add a positive --default-num-partitions, e.g. --default-num-partitions 4","Ensure the script computing partitions yields a number >= 1","Use --type non-partitioned instead if no partition count is desired","Verify flag name --default-num-partitions (not --num-partitions) in your CLI version"],"exampleFix":"// before\npulsar-admin namespaces set-auto-topic-creation t/ns --enable --type partitioned\n// after\npulsar-admin namespaces set-auto-topic-creation t/ns --enable --type partitioned --default-num-partitions 4","handlingStrategy":"validation","validationCode":"if [ \"$TYPE\" = partitioned ]; then\n  [ -n \"$NUM_PARTITIONS\" ] && [ \"$NUM_PARTITIONS\" -ge 1 ] || { echo \"--default-num-partitions must be >= 1 for partitioned\"; exit 1; }\nfi","typeGuard":null,"tryCatchPattern":"try { ... } catch (ParameterException e) { /* missing/invalid partitions: add positive --default-num-partitions */ }","preventionTips":["Always pair --type partitioned with a positive --default-num-partitions","Validate the partitions variable is a non-empty integer >= 1","Use --type non-partitioned when no partition count applies"],"tags":["cli","argument-validation","auto-topic-creation","partitions","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-14T05:17:10.506Z"}