Skip to content

docs: document max inputs/outputs/filters plugin limits#2554

Open
pierluigilenoci wants to merge 2 commits intofluent:masterfrom
pierluigilenoci:docs/document-max-inputs-outputs-filters
Open

docs: document max inputs/outputs/filters plugin limits#2554
pierluigilenoci wants to merge 2 commits intofluent:masterfrom
pierluigilenoci:docs/document-max-inputs-outputs-filters

Conversation

@pierluigilenoci
Copy link
Copy Markdown
Contributor

@pierluigilenoci pierluigilenoci commented Apr 24, 2026

Summary

Remove the outdated "up to 256 OUTPUT plugins" hard limit and add
documentation for the maximum number of input, output, and filter plugins
in both the classic-mode and YAML configuration references.

What changed

The routing bitmask was changed from a fixed-size array (4 × uint64_t = 256
bits) to a dynamically allocated bitmask sized at startup based on the number
of configured output plugins (flb_routes_mask_set_size() in
src/flb_engine.c).
This means the former 256-output cap no longer applies.

Input and filter plugin instances are stored in linked lists with no
compile-time size limit, so they were never capped either.

Changes per file

File Change
administration/configuring-fluent-bit/classic-mode/configuration-file.md Remove "up to 256 OUTPUT plugins"; add no-hard-limit note to INPUT, FILTER, and OUTPUT sections
administration/configuring-fluent-bit/yaml/pipeline-section.md Replace "up to 256 output plugins" with dynamic-limit note; add no-hard-limit note to inputs and filters sections

Closes fluent/fluent-bit#4201

Signed-off-by: Pierluigi Lenoci pierluigilenoci@gmail.com

Summary by CodeRabbit

  • Documentation
    • Clarified configuration docs: INPUT, FILTER, and OUTPUT plugins no longer have hard-coded count limits; practical limits depend on system resources (memory, file descriptors).
    • Added note that OUTPUT routing uses a dynamically sized bitmask computed at startup based on the configured output plugin count, constrained only by available system resources.

Remove the outdated "up to 256 OUTPUT plugins" hard limit from
both the classic and YAML configuration references. The routing
bitmask was changed from a fixed-size array (4 × 64 = 256 bits)
to a dynamically allocated bitmask that grows to match the number
of configured output plugins, so the 256 cap no longer applies.

Add a note to every plugin type section (INPUT, FILTER, OUTPUT)
in both configuration formats clarifying that there is no
hard-coded maximum and that the practical limit depends on
available system resources.

Closes fluent/fluent-bit#4201

Signed-off-by: Pierluigi Lenoci <pierluigilenoci@gmail.com>
@pierluigilenoci pierluigilenoci requested review from a team and eschabell as code owners April 24, 2026 15:23
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Apr 24, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: c2809ae1-8549-4720-a7ff-d287e1826709

📥 Commits

Reviewing files that changed from the base of the PR and between bbb9b14 and ebf5753.

📒 Files selected for processing (2)
  • administration/configuring-fluent-bit/classic-mode/configuration-file.md
  • administration/configuring-fluent-bit/yaml/pipeline-section.md
🚧 Files skipped from review as they are similar to previous changes (2)
  • administration/configuring-fluent-bit/yaml/pipeline-section.md
  • administration/configuring-fluent-bit/classic-mode/configuration-file.md

📝 Walkthrough

Walkthrough

Documentation updates remove hard-coded upper bounds for INPUT, FILTER, and OUTPUT plugins, describing counts as not limited by code and constrained instead by runtime resources; OUTPUT routing bitmask is noted to be dynamically sized at startup based on configured output plugins.

Changes

Cohort / File(s) Summary
Configuration docs
administration/configuring-fluent-bit/classic-mode/configuration-file.md, administration/configuring-fluent-bit/yaml/pipeline-section.md
Removed fixed "up to 256 OUTPUT" limit and added "no hard-coded limit" language for INPUT, FILTER, and OUTPUT. Clarified practical constraints (memory, file descriptors) and that the output routing bitmask is sized at startup from configured outputs.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~2 minutes

Suggested labels

5.0

Suggested reviewers

  • cosmo0920
  • patrick-stephens

Poem

🐰 I hopped through docs with nimble feet,

Limits loosened, clear and neat.
Bitmasks bloom when startup sings,
Resources set the bounds of wings.
A joyful tweak — the pipelines meet.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately describes the main change: documentation updates about maximum plugin limits for inputs, outputs, and filters.
Linked Issues check ✅ Passed The PR fully addresses issue #4201 by documenting maximum numbers of inputs, outputs, and filters across both configuration documentation files.
Out of Scope Changes check ✅ Passed All changes are directly scoped to documenting plugin limits as requested in issue #4201; no unrelated modifications are present.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (4)
administration/configuring-fluent-bit/classic-mode/configuration-file.md (2)

77-91: Clarify “no hard-coded limit” scope for FILTERs in classic mode.

Same suggestion as INPUTs: explicitly tie the statement to absence of a compile-time plugin-count limit.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@administration/configuring-fluent-bit/classic-mode/configuration-file.md`
around lines 77 - 91, Update the sentence that reads "There is no hard-coded
limit on the number of `FILTER` sections." to explicitly state that in classic
mode there is no compile-time or built-in limit on the number of `FILTER`
sections or filter plugins (e.g., `FILTER` with `Name`, `Match`, `Match_Regex`),
and clarify that the practical maximum is determined by runtime system resources
such as memory and CPU; replace the vague line with a clear statement tying the
lack of hard-coded limit to compile-time/plugin-count and noting the runtime
resource-based constraints.

53-66: Clarify “no hard-coded limit” scope for INPUTs in classic mode.

Consider changing to explicitly reference a compile-time cap (plugin-count) to avoid any perception of “truly unbounded.” Current practical-max clause already helps, but the added wording makes the guarantee unambiguous.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@administration/configuring-fluent-bit/classic-mode/configuration-file.md`
around lines 53 - 66, Update the "Config input" section text to clarify the
scope of "no hard-coded limit" for INPUT sections by stating there is no runtime
hard-coded limit in classic mode but a compile-time cap may exist (e.g., a
plugin-count constant), and recommend that practical limits depend on system
resources; modify the paragraph that currently reads "There is no hard-coded
limit on the number of `INPUT` sections." to explicitly mention "in classic mode
there is no runtime hard-coded limit on `INPUT` sections, though a compile-time
plugin-count cap may apply" and keep the following sentence about practical
maximums based on memory and file descriptors intact (referencing the `INPUT`
section and `input` plugin concept to locate the change).
administration/configuring-fluent-bit/yaml/pipeline-section.md (2)

68-81: Clarify “no hard-coded limit” scope for INPUTs.

This sentence is good, but “no hard-coded limit” can read as “unbounded in all cases.” Consider tightening to: “Fluent Bit does not impose a compile-time cap on the number of configured INPUT plugins; the practical maximum depends on system resources …” This prevents over-interpretation while keeping the same meaning.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@administration/configuring-fluent-bit/yaml/pipeline-section.md` around lines
68 - 81, Replace the ambiguous sentence about limits with a tightened phrasing
referencing the inputs section: change the line in the "inputs" section that
currently reads "There is no hard-coded limit on the number of input plugins."
to something like "Fluent Bit does not impose a compile-time cap on the number
of configured INPUT plugins; the practical maximum depends on available system
resources such as memory and file descriptors." Ensure this edit is made within
the inputs section where `inputs`, `name`, and `tag` are described.

136-150: Clarify “no hard-coded limit” scope for FILTERs.

Same wording pattern as INPUTs: consider explicitly stating it’s a compile-time cap (plugin-count) rather than an absence of any other limit (memory and plugin-specific constraints still apply).

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@administration/configuring-fluent-bit/yaml/pipeline-section.md` around lines
136 - 150, The sentence "There is no hard-coded limit on the number of filter
plugins" is ambiguous—update the `filters` section text to mirror the INPUTs
wording by clarifying that there is no compile-time hard limit on the number of
filter plugins (i.e., no built-in plugin-count cap), but practical limits still
apply due to system resources (memory) and plugin-specific constraints;
reference the `filters` section and parameters like `name`, `match`,
`match_regex`, and `log_level` so readers understand this applies to filter
plugins.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@administration/configuring-fluent-bit/classic-mode/configuration-file.md`:
- Around line 77-91: Update the sentence that reads "There is no hard-coded
limit on the number of `FILTER` sections." to explicitly state that in classic
mode there is no compile-time or built-in limit on the number of `FILTER`
sections or filter plugins (e.g., `FILTER` with `Name`, `Match`, `Match_Regex`),
and clarify that the practical maximum is determined by runtime system resources
such as memory and CPU; replace the vague line with a clear statement tying the
lack of hard-coded limit to compile-time/plugin-count and noting the runtime
resource-based constraints.
- Around line 53-66: Update the "Config input" section text to clarify the scope
of "no hard-coded limit" for INPUT sections by stating there is no runtime
hard-coded limit in classic mode but a compile-time cap may exist (e.g., a
plugin-count constant), and recommend that practical limits depend on system
resources; modify the paragraph that currently reads "There is no hard-coded
limit on the number of `INPUT` sections." to explicitly mention "in classic mode
there is no runtime hard-coded limit on `INPUT` sections, though a compile-time
plugin-count cap may apply" and keep the following sentence about practical
maximums based on memory and file descriptors intact (referencing the `INPUT`
section and `input` plugin concept to locate the change).

In `@administration/configuring-fluent-bit/yaml/pipeline-section.md`:
- Around line 68-81: Replace the ambiguous sentence about limits with a
tightened phrasing referencing the inputs section: change the line in the
"inputs" section that currently reads "There is no hard-coded limit on the
number of input plugins." to something like "Fluent Bit does not impose a
compile-time cap on the number of configured INPUT plugins; the practical
maximum depends on available system resources such as memory and file
descriptors." Ensure this edit is made within the inputs section where `inputs`,
`name`, and `tag` are described.
- Around line 136-150: The sentence "There is no hard-coded limit on the number
of filter plugins" is ambiguous—update the `filters` section text to mirror the
INPUTs wording by clarifying that there is no compile-time hard limit on the
number of filter plugins (i.e., no built-in plugin-count cap), but practical
limits still apply due to system resources (memory) and plugin-specific
constraints; reference the `filters` section and parameters like `name`,
`match`, `match_regex`, and `log_level` so readers understand this applies to
filter plugins.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: b3f40571-9e9a-46e1-ae48-5fb532476ae6

📥 Commits

Reviewing files that changed from the base of the PR and between 3b7dcab and bbb9b14.

📒 Files selected for processing (2)
  • administration/configuring-fluent-bit/classic-mode/configuration-file.md
  • administration/configuring-fluent-bit/yaml/pipeline-section.md

@eschabell eschabell self-assigned this Apr 24, 2026
@eschabell eschabell added waiting-on-review Waiting on a review from mainteners waiting-on-code-merge labels Apr 24, 2026
Copy link
Copy Markdown
Collaborator

@eschabell eschabell left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just two small fixes needed @pierluigilenoci, thanks for the docs PR!

Comment thread administration/configuring-fluent-bit/classic-mode/configuration-file.md Outdated
Comment thread administration/configuring-fluent-bit/yaml/pipeline-section.md Outdated
Signed-off-by: Pierluigi Lenoci <pierluigilenoci@gmail.com>
@pierluigilenoci
Copy link
Copy Markdown
Contributor Author

Done — wrapped bitmask in back-ticks in both files. Thanks for the review!

Copy link
Copy Markdown
Collaborator

@eschabell eschabell left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good to go @pierluigilenoci, just waiting on code PR merge.

@eschabell eschabell removed the waiting-on-review Waiting on a review from mainteners label Apr 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Document max inputs / outputs / filters that are allowed

2 participants