alibaba/canal · error · IllegalStateException
Duplicate extension {} name {} on {} and {}
Error message
Duplicate extension {} name {} on {} and {} What it means
Error "Duplicate extension {} name {} on {} and {}" thrown in alibaba/canal.
Source
Thrown at client-adapter/common/src/main/java/com/alibaba/otter/canal/client/adapter/support/ExtensionLoader.java:362
+ "), class " + clazz.getName()
+ "is not subtype of interface.");
} else {
try {
clazz.getConstructor(type);
} catch (NoSuchMethodException e) {
clazz.getConstructor();
String[] names = NAME_SEPARATOR.split(name);
if (names != null && names.length > 0) {
for (String n : names) {
if (!cachedNames.containsKey(clazz)) {
cachedNames.put(clazz, n);
}
Class<?> c = extensionClasses.get(n);
if (c == null) {
extensionClasses.put(n, clazz);
} else if (c != clazz) {
cachedNames.remove(clazz);
throw new IllegalStateException(
"Duplicate extension " + type.getName() + " name "
+ n + " on "
+ c.getName() + " and "
+ clazz.getName());
}
}
}
}
}
}
} catch (Throwable t) {
IllegalStateException e = new IllegalStateException(
"Failed to load extension class(interface: " + type + ", class line: "
+ line + ") in " + url
+ ", cause: "
+ t.getMessage(),
t);
exceptions.put(line, e);View on GitHub (pinned to 87be50e876)
Solutions
- Rename one of the conflicting extension implementations so each name is unique per extension point.
- Remove duplicate adapter jars from the classpath that register the same extension name.
When it happens
Trigger: Thrown at client-adapter/common/src/main/java/com/alibaba/otter/canal/client/adapter/support/ExtensionLoader.java:362 when the library encounters an invalid state.
Common situations: Duplicate extension name across two classes. Enforce uniqueness of extension names at load time; last-one-wins silently would make behavior order-dependent.
AI-assisted analysis of alibaba/canal@87be50e876 (2026-08-14).
Data as JSON: /api/errors/2b41366af9577005.
Report an issue: GitHub.