{"record":{"id":"9895406d53041821","repo":"apache/pulsar","slug":"illegal-subscription-type-s-possible-values-s-989540","errorCode":null,"errorMessage":"Illegal subscription type %s. Possible values: %s.","messagePattern":"Illegal subscription type (.+?)\\. Possible values: (.+?)\\.","errorType":"validation","errorClass":"ParameterException","httpStatus":null,"severity":"error","filePath":"pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdTopics.java","lineNumber":2363,"sourceCode":"    @Command(description = \"Set subscription types enabled for a topic\", hidden = true)\n    private class SetSubscriptionTypesEnabled extends CliCommand {\n        @Parameters(description = \"persistent://tenant/namespace/topic\", arity = \"1\")\n        private String topicName;\n\n        @Option(names = {\"--types\", \"-t\"}, description = \"Subscription types enabled list (comma separated values).\"\n                + \" Possible values: (Exclusive, Shared, Failover, Key_Shared).\", required = true, split = \",\")\n        private List<String> subTypes;\n\n        @Override\n        void run() throws PulsarAdminException {\n            String persistentTopic = validatePersistentTopic(topicName);\n            Set<SubscriptionType> types = new HashSet<>();\n            subTypes.forEach(s -> {\n                SubscriptionType subType;\n                try {\n                    subType = SubscriptionType.valueOf(s);\n                } catch (IllegalArgumentException exception) {\n                    throw new ParameterException(String.format(\"Illegal subscription type %s. Possible values: %s.\", s,\n                            Arrays.toString(SubscriptionType.values())));\n                }\n                types.add(subType);\n            });\n            getTopics().setSubscriptionTypesEnabled(persistentTopic, types);\n        }\n    }\n\n    @Command(description = \"Get subscription types enabled for a topic\", hidden = true)\n    private class GetSubscriptionTypesEnabled extends CliCommand {\n        @Parameters(description = \"persistent://tenant/namespace/topic\", arity = \"1\")\n        private String topicName;\n\n        @Override\n        void run() throws PulsarAdminException {\n            String persistentTopic = validatePersistentTopic(topicName);\n            print(getTopics().getSubscriptionTypesEnabled(persistentTopic));\n        }","sourceCodeStart":2345,"sourceCodeEnd":2381,"githubUrl":"https://github.com/apache/pulsar/blob/820761864ed8e2a7d2e52dd9763ad2ae117c1395/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdTopics.java#L2345-L2381","documentation":"The set-subscription-types-enabled command parses each comma-separated --type value with SubscriptionType.valueOf. Any token that is not an exact enum constant name (Exclusive, Shared, Failover, Key_Shared) throws this ParameterException listing all possible values.","triggerScenarios":"Running `pulsar-admin topics set-subscription-types-enabled <topic> --type <value>` with a misspelled or wrong-cased type such as `shared`, `key-shared`, or `KeyShared`.","commonSituations":"Translating documentation naming (`Key_Shared`) into kebab-case; enabling multiple types but misformatting the list; case sensitivity — valueOf is case-sensitive.","solutions":["Use exact enum names: Exclusive, Shared, Failover, or Key_Shared.","Pass multiple types comma-separated without spaces, e.g. --type Shared,Key_Shared.","Check the Possible values list in the error message for your Pulsar version."],"exampleFix":"// before\nbin/pulsar-admin topics set-subscription-types-enabled my-topic --type shared,key-shared\n// after\nbin/pulsar-admin topics set-subscription-types-enabled my-topic --type Shared,Key_Shared","handlingStrategy":"validation","validationCode":"// validate each comma-separated subscription type\nVALID=\"Exclusive,Shared,Failover,Key_Shared\"\nIFS=',' read -ra PARTS <<< \"$TYPES\"\nfor t in \"${PARTS[@]}\"; do\n  if ! echo \",$VALID,\" | grep -q \",$t,\"; then\n    echo \"illegal subscription type: $t (possible: $VALID)\"; exit 1;\n  fi\ndone","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Use exact Java enum names: Exclusive, Shared, Failover, Key_Shared.","valueOf is case-sensitive — never lowercase or kebab-case them.","Trim whitespace when building comma-separated lists."],"tags":["cli","argument-validation","subscription","enum"],"backgroundTag":"invalid-enum-value","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"}