EpicGames/lore · error
Failed to create notification plugin
Error message
Failed to create notification plugin '{plugin_name}': {e} What it means
The notification mode in [notification] names a notification plugin that the registry must instantiate. If registry.create_notification fails — plugin not registered, invalid plugin config, or a plugin-internal setup error — the failure is wrapped in this message naming the plugin.
Solutions
- Verify the plugin name in notification.mode matches a registered notification plugin (see the startup 'Registered plugins - notification: ...' log)
- Enable the plugin's cargo feature or register it before async_main
- Fix the [plugins.<plugin_name>] section so the plugin's config deserializes successfully
Example fix
# before [notification] mode = "slack" # after [notification] mode = "slack" [plugins.slack] webhook_url = "https://hooks.slack.com/services/..."
Defensive patterns
Strategy: validation
Validate before calling
if !registry.list_notification_plugins().contains(&plugin_name.to_string()) {
return Err(format!("notification plugin '{plugin_name}' is not registered"));
} Try / catch
match registry.create_notification(plugin_name, &plugin_config, &context).await {
Ok(output) => output,
Err(e) => return Err(anyhow::anyhow!("Failed to create notification plugin '{plugin_name}': {e}"))
.context(format!("verify [plugins.{plugin_name}] config and that the plugin feature is enabled")),
} Prevention
- Confirm notification.mode matches a plugin listed in the startup 'Registered plugins' log
- Test plugin config deserialization in CI before deploying
- Enable the plugin's cargo feature whenever its mode is referenced in config
When it happens
Trigger: notification.mode = "<plugin_name>" set to a plugin that isn't compiled in/registered, or whose [plugins.<plugin_name>] TOML config is missing required fields, so create_notification returns Err during async_main startup.
Common situations: Enabling notification.mode for a plugin whose cargo feature is off; renaming a plugin but not the config key; malformed webhook/slack plugin config (bad URL, missing token).
Related errors
- Failed to create immutable store plugin
- Failed to create mutable store plugin
- Failed to create lock store plugin
- Failed to create immutable store
- Notification plugin receiver background task failed
AI-assisted analysis of EpicGames/lore@074eb0b0d1 (2026-09-13).
Data as JSON: /api/errors/552cc1ab021b1de4.
Report an issue: GitHub.
Appendix: source
Thrown at lore-server/src/server.rs:1488
plugin_name => {
info!(plugin_name = plugin_name, "Creating notification plugin");
// Get the plugin config from the plugins section
let plugin_config = plugins
.get(plugin_name)
.cloned()
.unwrap_or_else(|| toml::Value::Table(toml::map::Map::new()));
let context = NotificationPluginContext {
environment: environment.clone(),
immutable_store: immutable_store.cloned(),
};
let output = registry
.create_notification(plugin_name, &plugin_config, &context)
.await
.map_err(|e| {
anyhow::anyhow!("Failed to create notification plugin '{plugin_name}': {e}")
})?;
// Spawn background tasks for the receiver tasks from the plugin
for task in output.receivers {
lore_spawn!(endpoints, async move {
task.await.map_err(|e| {
anyhow::anyhow!("Notification plugin receiver background task failed: {e}")
})
});
}
Ok((output.sender, None))
}
}
}
#[cfg(target_os = "linux")]
async fn log_base_address() {View on GitHub (pinned to 074eb0b0d1)