fluent/fluentd · error · Fluent::ConfigError

Duplicated plugin id `#{@id}`. Check whole configuration and

Error message

Duplicated plugin id `#{@id}`. Check whole configuration and fix it.

What it means

Error "Duplicated plugin id `#{@id}`. Check whole configuration and fix it." thrown in fluent/fluentd.

Source

Thrown at lib/fluent/plugin_id.rb:39

module Fluent
  module PluginId

    def initialize
      super

      @_plugin_id_variable_store = nil
      @_plugin_root_dir = nil
      @id = nil
    end

    def configure(conf)
      @_plugin_id_variable_store = Fluent::VariableStore.fetch_or_build(:plugin_id, default_value: Set.new)
      @id = conf['@id']
      @_id_configured = !!@id # plugin id is explicitly configured by users (or not)
      if @id
        @id = @id.to_s
        if @_plugin_id_variable_store.include?(@id) && !plugin_id_for_test?
          raise Fluent::ConfigError, "Duplicated plugin id `#{@id}`. Check whole configuration and fix it."
        end
        @_plugin_id_variable_store.add(@id)
      end

      super
    end

    def plugin_id_for_test?
      caller_locations.each do |location|
        # Thread::Backtrace::Location#path returns base filename or absolute path.
        # #absolute_path returns absolute_path always.
        # https://bugs.ruby-lang.org/issues/12159
        if /\/test_[^\/]+\.rb$/.match?(location.absolute_path) # location.path =~ /test_.+\.rb$/
          return true
        end
      end
      false
    end

View on GitHub (pinned to dd45c6e18d)

When it happens

Trigger: Thrown at lib/fluent/plugin_id.rb:39 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of fluent/fluentd@dd45c6e18d (2026-08-21). Data as JSON: /api/errors/e348409b9506c438. Report an issue: GitHub.