{"record":{"id":"ac376d92bf82cd41","repo":"apache/pulsar","slug":"key-doesn-t-exits-in-the-dynamicconfigurationma","errorCode":null,"errorMessage":"${key} doesn't exits in the dynamicConfigurationMap","messagePattern":"(.+?) doesn't exits in the dynamicConfigurationMap","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"pulsar-broker/src/main/java/org/apache/pulsar/broker/service/BrokerService.java","lineNumber":3749,"sourceCode":"     *\n     * @param configKey\n     *            : configuration field name\n     * @param listener\n     *            : listener which takes appropriate action on config-value change\n     */\n    public <T> void registerConfigurationListener(String configKey, Consumer<T> listener) {\n        validateConfigKey(configKey);\n        configRegisteredListeners.put(configKey, listener);\n    }\n\n    private void addDynamicConfigValidator(String key, Predicate<String> validator) {\n        validateConfigKey(key);\n        dynamicConfigurationMap.get(key).validator = validator;\n    }\n\n    private void validateConfigKey(String key) {\n        if (!dynamicConfigurationMap.containsKey(key)) {\n            throw new IllegalArgumentException(key + \" doesn't exits in the dynamicConfigurationMap\");\n        }\n    }\n\n    /**\n     * Allows the third-party plugin to register a custom dynamic configuration.\n     */\n    public void registerCustomDynamicConfiguration(String key, Predicate<String> validator) {\n        if (dynamicConfigurationMap.containsKey(key)) {\n            throw new IllegalArgumentException(key + \" already exists in the dynamicConfigurationMap\");\n        }\n        ConfigField configField = ConfigField.newCustomConfigField(null);\n        configField.validator = validator;\n        dynamicConfigurationMap.put(key, configField);\n    }\n\n    private void createDynamicConfigPathIfNotExist() {\n        try {\n            Optional<Map<String, String>> configCache =","sourceCodeStart":3731,"sourceCodeEnd":3767,"githubUrl":"https://github.com/apache/pulsar/blob/820761864ed8e2a7d2e52dd9763ad2ae117c1395/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/BrokerService.java#L3731-L3767","documentation":"validateConfigKey rejects a configuration key that is not present in the dynamicConfigurationMap — the key is not a recognized dynamic configuration field, so no listener or validator can be registered for it.","triggerScenarios":"Thrown at pulsar-broker/src/main/java/org/apache/pulsar/broker/service/BrokerService.java:3749 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Use a key that exists in the dynamic configuration (check PulsarConfiguration fields)","Fix typos in the config key string"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"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"}