prestodb/presto · error · IllegalArgumentException
Event listener '%s' is already registered
Error message
Event listener '%s' is already registered
What it means
EventListenerManager.addEventListenerFactory received a second event listener factory with the same name; names must be unique across plugins and the duplicate registration is rejected with ALREADY_EXISTS.
Source
Thrown at presto-main-base/src/main/java/com/facebook/presto/eventlistener/EventListenerManager.java:71
private static final String EVENT_LISTENER_PROPERTY_NAME = "event-listener.name";
private final List<File> configFiles;
private final Map<String, EventListenerFactory> eventListenerFactories = new ConcurrentHashMap<>();
private final AtomicReference<List<EventListener>> configuredEventListeners =
new AtomicReference<>(ImmutableList.of());
private final AtomicBoolean loading = new AtomicBoolean(false);
@Inject
public EventListenerManager(EventListenerConfig config)
{
this.configFiles = ImmutableList.copyOf(config.getEventListenerFiles());
}
public void addEventListenerFactory(EventListenerFactory eventListenerFactory)
{
requireNonNull(eventListenerFactory, "eventListenerFactory is null");
if (eventListenerFactories.putIfAbsent(eventListenerFactory.getName(), eventListenerFactory) != null) {
throw new IllegalArgumentException(format("Event listener '%s' is already registered", eventListenerFactory.getName()));
}
}
public void loadConfiguredEventListeners()
{
checkState(loading.compareAndSet(false, true), "Event listeners already loaded");
List<File> configFiles = this.configFiles;
if (configFiles.isEmpty()) {
if (!Files.exists(EVENT_LISTENER_CONFIGURATION)) {
return;
}
configFiles = ImmutableList.of(EVENT_LISTENER_CONFIGURATION.toFile());
}
configFiles.forEach(this::createEventListener);
}
private void createEventListener(File configFile)
{View on GitHub (pinned to 55bb57d202)
Solutions
- Rename one of the event listener factories
- Check for duplicated plugin jars on the classpath
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at presto-main-base/src/main/java/com/facebook/presto/eventlistener/EventListenerManager.java:71 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of prestodb/presto@55bb57d202 (2026-09-04).
Data as JSON: /api/errors/daabc9b9d743ec43.
Report an issue: GitHub.