{"record":{"id":"5f34a2fbc4af1edb","repo":"apache/pulsar","slug":"no-factory-is-found-for-name-name-available","errorCode":null,"errorMessage":"No factory is found for name `${name}`. Available names are : ${factories}","messagePattern":"No factory is found for name `(.+?)`\\. Available names are : (.+?)","errorType":"exception","errorClass":"RuntimeException","httpStatus":null,"severity":"error","filePath":"pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/utils/CustomCommandFactoryProvider.java","lineNumber":65,"sourceCode":"     * create a Command Factory.\n     */\n    public static List<CustomCommandFactory> createCustomCommandFactories(\n            Properties conf) throws IOException {\n        String names = conf.getProperty(\"customCommandFactories\", \"\");\n        List<CustomCommandFactory> result = new ArrayList<>();\n        if (names.isEmpty()) {\n            // early exit\n            return result;\n        }\n\n        String directory = conf.getProperty(\"cliExtensionsDirectory\", \"cliextensions\");\n        String narExtractionDirectory = NarClassLoader.DEFAULT_NAR_EXTRACTION_DIR;\n        CustomCommandFactoryDefinitions definitions = searchForCustomCommandFactories(directory,\n                narExtractionDirectory);\n        for (String name : names.split(\",\")) {\n            CustomCommandFactoryMetaData metaData = definitions.getFactories().get(name);\n            if (null == metaData) {\n                throw new RuntimeException(\"No factory is found for name `\" + name\n                        + \"`. Available names are : \" + definitions.getFactories());\n            }\n            CustomCommandFactory factory = load(metaData, narExtractionDirectory);\n            if (factory != null) {\n                result.add(factory);\n            }\n            log.debug().attr(\"name\", name).log(\"Successfully loaded command factory\");\n        }\n        return result;\n    }\n\n    private static CustomCommandFactoryDefinitions searchForCustomCommandFactories(String directory,\n                                                                       String narExtractionDirectory)\n            throws IOException {\n        Path path = Paths.get(directory).toAbsolutePath().normalize();\n        log.debug().attr(\"path\", path).log(\"Searching for command factories\");\n\n        CustomCommandFactoryDefinitions customCommandFactoryDefinitions = new CustomCommandFactoryDefinitions();","sourceCodeStart":47,"sourceCodeEnd":83,"githubUrl":"https://github.com/apache/pulsar/blob/820761864ed8e2a7d2e52dd9763ad2ae117c1395/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/utils/CustomCommandFactoryProvider.java#L47-L83","documentation":"Extension lookup failure in CustomCommandFactoryProvider.createCustomCommandFactories: the customCommandFactories property lists a factory name for which no matching NAR metadata entry was found; the available factory names are listed to help correct the configuration entry, which is the faulty input.","triggerScenarios":"Thrown at pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/utils/CustomCommandFactoryProvider.java:65 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Fix the factory name in the config","Install the NAR providing that factory in the extensions directory"],"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"}