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

  1. Rename one of the event listener factories
  2. 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.