{"record":{"id":"cf23ac69cb37fbfb","repo":"alibaba/canal","slug":"extension-name-null","errorCode":null,"errorMessage":"Extension name == null","messagePattern":"Extension name == null","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"client-adapter/common/src/main/java/com/alibaba/otter/canal/client/adapter/support/ExtensionLoader.java","lineNumber":104,"sourceCode":"            loader = (ExtensionLoader<T>) EXTENSION_LOADERS.get(type);\n        }\n        return loader;\n    }\n\n    private ExtensionLoader(Class<?> type, String classLoaderPolicy){\n        this.type = type;\n        this.classLoaderPolicy = classLoaderPolicy;\n    }\n\n    /**\n     * 返回指定名字的扩展\n     *\n     * @param name\n     * @return\n     */\n    @SuppressWarnings(\"unchecked\")\n    public T getExtension(String name) {\n        if (name == null || name.length() == 0) throw new IllegalArgumentException(\"Extension name == null\");\n        if (\"true\".equals(name)) {\n            return getDefaultExtension();\n        }\n        Holder<Object> holder = cachedInstances.get(name);\n        if (holder == null) {\n            cachedInstances.putIfAbsent(name, new Holder<>());\n            holder = cachedInstances.get(name);\n        }\n        Object instance = holder.get();\n        if (instance == null) {\n            synchronized (holder) {\n                instance = holder.get();\n                if (instance == null) {\n                    instance = createExtension(name);\n                    holder.set(instance);\n                }\n            }\n        }","sourceCodeStart":86,"sourceCodeEnd":122,"githubUrl":"https://github.com/alibaba/canal/blob/87be50e87686a3e8af08c368d0e1ffd1f59eb04a/client-adapter/common/src/main/java/com/alibaba/otter/canal/client/adapter/support/ExtensionLoader.java#L86-L122","documentation":"Error \"Extension name == null\" thrown in alibaba/canal.","triggerScenarios":"Thrown at client-adapter/common/src/main/java/com/alibaba/otter/canal/client/adapter/support/ExtensionLoader.java:104 when the library encounters an invalid state.","commonSituations":"Extension name missing in the SPI config line. Validate each line of the extension file before parsing; skip or fail with the file and line number.","solutions":["Provide a non-null, non-empty extension name when requesting an extension instance.","Check the adapter configuration (e.g. outer adapter key/name) matches a name defined in the SPI resource files."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"87be50e87686a3e8af08c368d0e1ffd1f59eb04a","analyzedAt":"2026-08-14T04:30:11.918Z","schemaVersion":2},"datasetVersion":"2026-08-14T05:17:29.042Z"}