{"record":{"id":"9dd4768a9e185b8e","repo":"fluent/fluentd","slug":"plugin-type-does-not-support-multi-workers-co","errorCode":null,"errorMessage":"Plugin '#{type}' does not support multi workers configuration (#{self.class})","messagePattern":"Plugin '#(.+?)' does not support multi workers configuration \\(#(.+?)\\)","errorType":"exception","errorClass":"Fluent::ConfigError","httpStatus":null,"severity":"error","filePath":"lib/fluent/plugin.rb","lineNumber":201,"sourceCode":"    end\n\n    module FeatureAvailabilityChecker\n      def configure(conf)\n        super\n\n        # extend plugin instance by this module\n        # to run this check after all #configure methods of plugins and plugin helpers\n        sysconf = if self.respond_to?(:owner) && owner.respond_to?(:system_config)\n                    owner.system_config\n                  elsif self.respond_to?(:system_config)\n                    self.system_config\n                  else\n                    nil\n                  end\n\n        if sysconf && sysconf.workers > 1 && !self.multi_workers_ready?\n          type = Fluent::Plugin.lookup_type_from_class(self.class)\n          raise Fluent::ConfigError, \"Plugin '#{type}' does not support multi workers configuration (#{self.class})\"\n        end\n      end\n    end\n  end\nend\n","sourceCodeStart":183,"sourceCodeEnd":207,"githubUrl":"https://github.com/fluent/fluentd/blob/dd45c6e18dc7be33b5e5a0f0767bf46307ff5626/lib/fluent/plugin.rb#L183-L207","documentation":"With <system> workers N (N>1), every plugin in the config must answer multi_workers_ready? true; the check runs in Fluent::Plugin#configure after the plugin and its helpers are configured, using the effective system config (owner's or its own). A false answer raises ConfigError naming the plugin type and class. Plugins confined to a specific worker via a <worker N> block get workers overridden to 1 for that scope (see base.rb system_config_override), so they are exempt.","triggerScenarios":"<system> workers 4 combined with a single-worker-only plugin (typically some third-party inputs or plugins using non-multi-worker-safe resources); scaling a working single-worker config to multi-worker for the first time; adding a new source that never declared multi-worker support.","commonSituations":"Performance scaling attempts on multi-core hosts; third-party plugins predating multi-worker support; test configs running fine with workers 1 but failing in production tuned to N workers.","solutions":["Confine the offending plugin to one worker with a <worker 0> block so its effective worker count is 1","Set <system> workers back to 1 (or a value the whole pipeline supports)","Upgrade the plugin to a multi-worker-capable version or replace it with one that supports workers","Split the workload: run the single-worker plugin in its own fluentd instance and forward to the multi-worker one"],"exampleFix":"# before\n<system>\n  workers 4\n</system>\n<source>\n  @type my_single_worker_plugin\n</source>\n\n# after\n<system>\n  workers 4\n</system>\n<worker 0>\n  <source>\n    @type my_single_worker_plugin\n  </source>\n</worker>","handlingStrategy":"validation","validationCode":"# Pre-flight in a test: configure the plugin under a multi-worker system config\nFluent::SystemConfig.overwrite_system_config(Fluent::SystemConfig.new(workers: 4)) do\n  plugin.configure(config_element)\nend # raises here if the plugin is not multi-worker ready","typeGuard":null,"tryCatchPattern":null,"preventionTips":["When raising worker counts, dry-run the exact production config first","Confine single-worker plugins to a <worker 0> block instead of lowering global workers","Check a third-party plugin for multi_workers_ready? support before adopting it"],"tags":["fluentd","multi-worker","scaling","plugin-lifecycle","config"],"backgroundTag":"multi-worker-unsupported","analyzedSha":"dd45c6e18dc7be33b5e5a0f0767bf46307ff5626","analyzedAt":"2026-08-21T16:22:07.332Z","schemaVersion":2},"datasetVersion":"2026-08-21T18:17:14.833Z"}