alibaba/canal · error · RuntimeException
ERROR load Config: {} {}
Error message
ERROR load Config: {} {} What it means
Thrown by KuduMappingConfigLoader.load() as a wrapper around any exception from config.validate() for a given kudu mapping file. The message embeds the fileName and the underlying cause's message, and the original exception is chained, so the real validation defect is identifiable from the cause.
Source
Thrown at client-adapter/kudu/src/main/java/com/alibaba/otter/canal/client/adapter/kudu/config/KuduMappingConfigLoader.java:40
* 加载HBase表映射配置
*
* @return 配置名/配置文件名--对象
*/
public static Map<String, KuduMappingConfig> load(Properties envProperties) {
logger.info("## Start loading kudu mapping config ... ");
Map<String, KuduMappingConfig> result = new LinkedHashMap<>();
Map<String, String> configContentMap = MappingConfigsLoader.loadConfigs("kudu");
configContentMap.forEach((fileName, content) -> {
KuduMappingConfig config = YamlUtils.ymlToObj(null, content, KuduMappingConfig.class, null, envProperties);
if (config == null) {
return;
}
try {
config.validate();
} catch (Exception e) {
throw new RuntimeException("ERROR load Config: " + fileName + " " + e.getMessage(), e);
}
result.put(fileName, config);
});
logger.info("## kudu mapping config loaded");
return result;
}
}
View on GitHub (pinned to 87be50e876)
Solutions
- Read the fileName and the chained cause message in the stack trace to find the offending field (e.g. 'KuduMapping.database').
- Open that named yml and supply the missing/invalid field.
- Restart the adapter.
Example fix
# Error: ERROR load Config: kudu/bad.yml KuduMapping.database # before (kudu/bad.yml) kuduMapping: table: user # after kuduMapping: database: mytest table: user
Defensive patterns
Strategy: try-catch
Try / catch
try {
Map<String, KuduMappingConfig> all = KuduMappingConfigLoader.load(envProperties);
} catch (RuntimeException e) {
// e.getMessage() starts with "ERROR load Config: <fileName> <cause>"
String file = e.getMessage().replaceAll("^ERROR load Config: (\\S+).*", "$1");
logger.error("Kudu mapping file failed validation: {}", file, e.getCause());
throw e;
} Prevention
- Treat the chained cause as the real error; the fileName tells you which yml to fix.
- Validate all kudu yml files in CI by calling KuduMappingConfigLoader.load() against a test Properties.
When it happens
Trigger: For a loaded kudu yml, config.validate() throws (e.g. NullPointerException for a missing database). The loader catches it and rethrows a RuntimeException prefixed with 'ERROR load Config: <fileName>'.
Common situations: A kudu yml is missing a required field such as database; the fileName in the message tells you exactly which file to fix.
Related errors
- KuduMapping.database
- ERROR Config: {fileName} {errorMessage}
- ERROR Config: {fileName} {errorMessage}
- No kudu adapter found for config key: {}
- not allow to change outAdapterKey
AI-assisted analysis of alibaba/canal@87be50e876 (2026-08-14).
Data as JSON: /api/errors/73594c702737ef72.
Report an issue: GitHub.