Skip to content

config: engine: Implement adaptive flushing#11498

Open
cosmo0920 wants to merge 5 commits intomasterfrom
cosmo0920-implement-adaptive-flushing
Open

config: engine: Implement adaptive flushing#11498
cosmo0920 wants to merge 5 commits intomasterfrom
cosmo0920-implement-adaptive-flushing

Conversation

@cosmo0920
Copy link
Contributor

@cosmo0920 cosmo0920 commented Feb 25, 2026

Adaptive flush parameters behavior

This behavior is described as follows with related parameters:


  • flush:
    • Base global interval in seconds.
    • Adaptive mode never replaces this semantic; it scales around this baseline.
       
  • flush.adaptive:
    • Master switch for adaptive scheduling.
    • off => legacy fixed interval behavior.
    • on => dynamic interval updates on each flush cycle.
       
  • flush.adaptive.min_interval / flush.adaptive.max_interval:
    • Hard lower/upper bounds for effective interval.
    • Every computed interval is clamped to this range.
       
  • flush.adaptive.low_pressure / flush.adaptive.medium_pressure /
    flush.adaptive.high_pressure:
    • Backpressure thresholds (in percent) derived from output chunk utilization.
    • Mapping to step levels:
    • pressure <= low => level 0 (slowest)
    • low < pressure < medium => level 1
    • medium <= pressure < high => level 2
    • pressure >= high => level 3 (fastest)
       
  • flush.adaptive.up_steps:
    • Number of consecutive pressure samples required before moving to a
      faster level (smaller interval).
    • Lower values react faster to bursts.
       
  • flush.adaptive.down_steps:
    • Number of consecutive samples required before moving to a slower level
      (larger interval).
    • Typically configured greater than up_steps to reduce oscillation.
       
  • Runtime levels and multipliers:
    • Level 0 => 2.0x base interval
    • Level 1 => 1.0x base interval
    • Level 2 => 0.75x base interval
    • Level 3 => 0.5x base interval
       
  • Effective interval formula:
    • effective = clamp(flush * level_multiplier, min_interval, max_interval)
    • Timer is re-armed only when effective interval meaningfully changes.

Enter [N/A] in the box, if an item is not applicable to your change.

Testing
Before we can approve your change; please submit the following in a comment:

  • Example configuration file for the change
  • Debug log output from testing the change
  • Attached Valgrind output that shows no leaks or memory corruption was found

If this is a change to packaging of containers or native binaries then please confirm it works for all targets.

  • Run local packaging test showing all targets (including any new ones) build.
  • Set ok-package-test label to test for all targets (requires maintainer to do).

Documentation

  • Documentation required for this feature

Backporting

  • Backport to latest stable release.

Fluent Bit is licensed under Apache 2.0, by submitting this pull request I understand that this code will be released under the terms of that license.

Summary by CodeRabbit

  • New Features

    • Adaptive flushing: runtime-adjusted flush intervals driven by measured pressure, with configurable thresholds, min/max bounds, and step tuning.
  • Documentation

    • Added in-config documentation blocks describing adaptive flush options and defaults.
  • Tests

    • Added unit tests covering pressure→level mapping and interval calculation/clamping behavior.

Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 052256aed4

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@coderabbitai
Copy link

coderabbitai bot commented Feb 25, 2026

📝 Walkthrough

Walkthrough

Adds adaptive flush: new configuration options and macros, new fields in flb_config, two public API functions, implementation and integration of adaptive flush logic in the engine (timer reset, backpressure measurement, hysteresis), initialization wiring, and unit tests plus conf comments.

Changes

Cohort / File(s) Summary
Configuration & Documentation
conf/fluent-bit.conf
Adds commented documentation blocks for adaptive flush keys (flush.adaptive, flush.adaptive.min_interval, flush.adaptive.max_interval, flush.adaptive.low_pressure, flush.adaptive.medium_pressure, flush.adaptive.high_pressure, flush.adaptive.up_steps, flush.adaptive.down_steps).
Public Headers
include/fluent-bit/flb_config.h, include/fluent-bit/flb_engine.h
Adds adaptive-flush fields to struct flb_config and new FLB_CONF_STR_* macros; declares flb_engine_adaptive_flush_target_level() and flb_engine_adaptive_flush_interval().
Config wiring & defaults
src/flb_config.c
Registers new config metadata entries, initializes defaults for all adaptive parameters, and sets flush_adaptive_current_interval from the base flush value.
Engine implementation
src/flb_engine.c
Implements clamp/backpressure/timer helpers, adaptive update/init routines, integrates adaptive update after flush, validates/clamps params on startup, and resets the flush timer when interval changes; exports the two adaptive helper functions.
Tests & Build
tests/internal/CMakeLists.txt, tests/internal/engine_adaptive_flush.c
Adds new unit test source to build and two tests verifying level thresholds and interval computation/clamping.

Sequence Diagram

sequenceDiagram
    participant E as Engine
    participant C as Config
    participant O as Outputs
    participant T as Timer

    Note over E: After a flush event
    E->>O: Query backlog/size per output
    O-->>E: Return max backpressure %
    E->>E: flb_engine_adaptive_flush_target_level(pressure)
    E->>E: Apply hysteresis (up/down steps) -> determine target level
    E->>C: Update adaptive_level, hits, direction
    E->>E: flb_engine_adaptive_flush_interval(level)
    E->>C: Update flush_adaptive_current_interval
    alt Interval changed
        E->>T: flb_engine_flush_timer_reset(new_interval)
        T-->>E: Timer restarted
        E->>E: Log interval change
    end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Suggested reviewers

  • edsiper
  • fujimotos
  • koleini

Poem

🐇 I nibble code and chase the ticks,

When queues climb high I quicken my licks,
When calm returns I stretch and slow,
I hop the timer to ebb and flow,
Adaptive flush — a happy hop and go.

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'config: engine: Implement adaptive flushing' clearly and concisely describes the main change—implementing an adaptive flushing mechanism across config and engine modules.

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

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch cosmo0920-implement-adaptive-flushing

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

@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.

Actionable comments posted: 4

🧹 Nitpick comments (1)
src/flb_engine.c (1)

354-365: Reuse the helper APIs inside the update path to avoid logic drift.

flb_engine_adaptive_flush_update() reimplements threshold-to-level and interval computation logic already exposed by flb_engine_adaptive_flush_target_level() and flb_engine_adaptive_flush_interval().

♻️ Proposed simplification
-    if (pressure >= config->flush_adaptive_high_pressure) {
-        target_level = 3;
-    }
-    else if (pressure >= config->flush_adaptive_medium_pressure) {
-        target_level = 2;
-    }
-    else if (pressure <= config->flush_adaptive_low_pressure) {
-        target_level = 0;
-    }
-    else {
-        target_level = 1;
-    }
+    target_level = flb_engine_adaptive_flush_target_level(config, pressure);
@@
-    interval = config->flush * multipliers[config->flush_adaptive_level];
-
-    interval = adaptive_flush_clamp(interval,
-                                    config->flush_adaptive_min_interval,
-                                    config->flush_adaptive_max_interval);
+    interval = flb_engine_adaptive_flush_interval(config,
+                                                  config->flush_adaptive_level);

Also applies to: 394-398

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

In `@src/flb_engine.c` around lines 354 - 365, In
flb_engine_adaptive_flush_update(), replace the duplicated threshold-to-level
and interval computation with calls to the existing helpers: call
flb_engine_adaptive_flush_target_level(pressure, config) to get target_level and
then flb_engine_adaptive_flush_interval(target_level, config) to compute the
interval; update the code paths that currently reimplement those conditionals
(also the similar block around the other update at the later location) to use
these helpers so logic is centralized and cannot drift.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@src/flb_engine.c`:
- Around line 1184-1202: Clamp all three adaptive pressure thresholds to the
[0,100] range before performing ordering adjustments: ensure
config->flush_adaptive_low_pressure, config->flush_adaptive_medium_pressure and
config->flush_adaptive_high_pressure are each bounded to 0.0 and 100.0 first,
then run the existing ordering checks that adjust medium/high relative to low;
this prevents medium or high from remaining out-of-range even after the
cross-field corrections.
- Around line 1204-1210: The startup sets
config->flush_adaptive_current_interval to the raw config->flush which can
violate adaptive min/max; before calling flb_engine_flush_timer_reset you should
initialize the first adaptive interval using the adaptive calculation routine
(e.g. call flb_engine_flush_adaptive_calculate(config) or otherwise compute &
clamp using config->flush_adaptive_min/max) so that
config->flush_adaptive_current_interval reflects adaptive rules, then pass that
value to flb_engine_flush_timer_reset instead of config->flush.
- Around line 285-303: Currently the code destroys the existing flush timer with
mk_event_timeout_destroy(event) before calling mk_event_timeout_create for the
new interval, which can leave flushing stopped if creation fails; change the
flow to attempt creating the new timer first (use a temporary event/timer or
save current config->flush_fd and event state), call mk_event_timeout_create
with flb_time_from_double(&t_flush, interval) into a temporary fd, and only on
success set event->priority = FLB_ENGINE_PRIORITY_FLUSH, update config->flush_fd
to the new fd and destroy the old timer (mk_event_timeout_destroy) and
free/replace the event; if creation fails, keep the existing
config->flush_fd/event intact and call flb_utils_error(FLB_ERR_CFG_FLUSH_CREATE)
and return -1 so periodic flushing is not lost.

In `@tests/internal/engine_adaptive_flush.c`:
- Around line 11-17: The test dereferences config after calling
flb_config_init() but only uses TEST_CHECK(config != NULL), which doesn't stop
execution on failure; update the test to guard against a NULL config by either
replacing TEST_CHECK with a failing assertion macro (e.g., TEST_REQUIRE or
similar) or adding an explicit null-check after flb_config_init(): if (config ==
NULL) { TEST_FAIL("flb_config_init() returned NULL"); return; } then set
config->flush_adaptive_low_pressure, config->flush_adaptive_medium_pressure, and
config->flush_adaptive_high_pressure only when config is non-NULL; apply the
same change to the other identical block that uses flb_config_init() and the
same flush_adaptive_* fields.

---

Nitpick comments:
In `@src/flb_engine.c`:
- Around line 354-365: In flb_engine_adaptive_flush_update(), replace the
duplicated threshold-to-level and interval computation with calls to the
existing helpers: call flb_engine_adaptive_flush_target_level(pressure, config)
to get target_level and then flb_engine_adaptive_flush_interval(target_level,
config) to compute the interval; update the code paths that currently
reimplement those conditionals (also the similar block around the other update
at the later location) to use these helpers so logic is centralized and cannot
drift.

ℹ️ Review info

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between bc966ed and 052256a.

📒 Files selected for processing (7)
  • conf/fluent-bit.conf
  • include/fluent-bit/flb_config.h
  • include/fluent-bit/flb_engine.h
  • src/flb_config.c
  • src/flb_engine.c
  • tests/internal/CMakeLists.txt
  • tests/internal/engine_adaptive_flush.c

Signed-off-by: Hiroshi Hatake <hiroshi@chronosphere.io>
Copy link

@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.

Actionable comments posted: 1

♻️ Duplicate comments (1)
src/flb_engine.c (1)

446-464: ⚠️ Potential issue | 🟠 Major

Pressure threshold normalization is still incomplete for edge inputs.

Line 446 clamps only the low lower-bound and Line 450 clamps only the high upper-bound. Invalid values like low > 100 or high < 0 can still leave inconsistent ordering after the current adjustments.

🔧 Proposed fix
-    if (config->flush_adaptive_low_pressure < 0.0) {
-        config->flush_adaptive_low_pressure = 0.0;
-    }
-
-    if (config->flush_adaptive_high_pressure > 100.0) {
-        config->flush_adaptive_high_pressure = 100.0;
-    }
+    config->flush_adaptive_low_pressure =
+        adaptive_flush_clamp(config->flush_adaptive_low_pressure, 0.0, 100.0);
+    config->flush_adaptive_medium_pressure =
+        adaptive_flush_clamp(config->flush_adaptive_medium_pressure, 0.0, 100.0);
+    config->flush_adaptive_high_pressure =
+        adaptive_flush_clamp(config->flush_adaptive_high_pressure, 0.0, 100.0);

     if (config->flush_adaptive_low_pressure >
         config->flush_adaptive_medium_pressure) {
         config->flush_adaptive_medium_pressure =
             config->flush_adaptive_low_pressure;
     }

     if (config->flush_adaptive_medium_pressure >
         config->flush_adaptive_high_pressure) {
         config->flush_adaptive_medium_pressure =
             config->flush_adaptive_high_pressure;
     }
+
+    if (config->flush_adaptive_low_pressure >
+        config->flush_adaptive_medium_pressure) {
+        config->flush_adaptive_low_pressure =
+            config->flush_adaptive_medium_pressure;
+    }
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/flb_engine.c` around lines 446 - 464, The current normalization only
clamps flush_adaptive_low_pressure lower-bound and flush_adaptive_high_pressure
upper-bound leaving cases like low > 100 or high < 0 unhandled; update the
normalization to first clamp both config->flush_adaptive_low_pressure and
config->flush_adaptive_high_pressure into [0.0, 100.0], then ensure ordering by
clamping config->flush_adaptive_medium_pressure between the (possibly adjusted)
low and high values (e.g., medium = max(medium, low); medium = min(medium,
high)), and finally ensure low <= medium <= high by adjusting medium as needed
using the normalized low/high values so all edge inputs produce a consistent
ordering.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@src/flb_engine.c`:
- Around line 426-470: The adaptive init currently always computes and sets
config->flush_adaptive_current_interval and the timer arming site
unconditionally, which lets adaptive clamps override a fixed Flush setting;
update flb_engine_adaptive_flush_init to only compute/assign
flush_adaptive_current_interval when adaptive mode is enabled (check the
adaptive flag/level), and modify the code that arms the timer (the place that
currently uses config->flush_adaptive_current_interval) to use
config->flush_interval when adaptive is disabled; reference
flb_engine_adaptive_flush_init, flb_engine_adaptive_flush_interval, and the
timer-arming call that uses flush_adaptive_current_interval and gate the
adaptive logic behind the adaptive enable/level check so fixed Flush values are
preserved.

---

Duplicate comments:
In `@src/flb_engine.c`:
- Around line 446-464: The current normalization only clamps
flush_adaptive_low_pressure lower-bound and flush_adaptive_high_pressure
upper-bound leaving cases like low > 100 or high < 0 unhandled; update the
normalization to first clamp both config->flush_adaptive_low_pressure and
config->flush_adaptive_high_pressure into [0.0, 100.0], then ensure ordering by
clamping config->flush_adaptive_medium_pressure between the (possibly adjusted)
low and high values (e.g., medium = max(medium, low); medium = min(medium,
high)), and finally ensure low <= medium <= high by adjusting medium as needed
using the normalized low/high values so all edge inputs produce a consistent
ordering.

ℹ️ Review info

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 052256a and bc55331.

📒 Files selected for processing (7)
  • conf/fluent-bit.conf
  • include/fluent-bit/flb_config.h
  • include/fluent-bit/flb_engine.h
  • src/flb_config.c
  • src/flb_engine.c
  • tests/internal/CMakeLists.txt
  • tests/internal/engine_adaptive_flush.c
🚧 Files skipped from review as they are similar to previous changes (3)
  • tests/internal/engine_adaptive_flush.c
  • include/fluent-bit/flb_engine.h
  • conf/fluent-bit.conf

Signed-off-by: Hiroshi Hatake <hiroshi@chronosphere.io>
Signed-off-by: Hiroshi Hatake <hiroshi@chronosphere.io>
Signed-off-by: Hiroshi Hatake <hiroshi@chronosphere.io>
Signed-off-by: Hiroshi Hatake <hiroshi@chronosphere.io>
Copy link

@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.

♻️ Duplicate comments (1)
src/flb_engine.c (1)

451-469: ⚠️ Potential issue | 🟠 Major

flush_adaptive_high_pressure is not clamped to >= 0; invalid threshold ordering can survive validation.

flush_adaptive_low_pressure is floored at 0 (line 451) and flush_adaptive_high_pressure is capped at 100 (line 455), but a negative high_pressure value passes through unguarded. The ordering correction at lines 465–469 then copies that negative value into flush_adaptive_medium_pressure, leaving medium below the already-clamped low, which is a state the rest of the adaptive logic never recovers from.

Minimal reproduction: low=10, medium=20, high=-5 → after init: low=10, medium=-5, high=-5.

The previous review's proposed fix (clamp all three independently to [0, 100] before the ordering checks) was only partially applied.

🛡️ Proposed fix
-    if (config->flush_adaptive_low_pressure < 0.0) {
-        config->flush_adaptive_low_pressure = 0.0;
-    }
-
-    if (config->flush_adaptive_high_pressure > 100.0) {
-        config->flush_adaptive_high_pressure = 100.0;
-    }
+    config->flush_adaptive_low_pressure =
+        adaptive_flush_clamp(config->flush_adaptive_low_pressure, 0.0, 100.0);
+    config->flush_adaptive_medium_pressure =
+        adaptive_flush_clamp(config->flush_adaptive_medium_pressure, 0.0, 100.0);
+    config->flush_adaptive_high_pressure =
+        adaptive_flush_clamp(config->flush_adaptive_high_pressure, 0.0, 100.0);

     if (config->flush_adaptive_low_pressure >
         config->flush_adaptive_medium_pressure) {
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/flb_engine.c` around lines 451 - 469, The three adaptive pressure fields
(config->flush_adaptive_low_pressure, config->flush_adaptive_medium_pressure,
config->flush_adaptive_high_pressure) must each be independently clamped to the
valid range [0.0, 100.0] before enforcing ordering; update the init logic so you
floor any value < 0.0 to 0.0 and cap any value > 100.0 to 100.0 for all three
fields, then apply the existing ordering corrections that copy low->medium or
high->medium as needed (i.e., perform the per-field clamps first, then run the
comparisons that adjust flush_adaptive_medium_pressure).
🧹 Nitpick comments (2)
src/flb_engine.c (1)

249-276: No outputs with limits → pressure always 0; consider logging a hint.

When no output instance has total_limit_size > 0, this function always returns 0.0, keeping adaptive at level 0 (2× slow). Users who enable flush.adaptive without configuring chunk limits will silently get the slowest interval with no diagnostic. A single one-time flb_debug log at init time noting that adaptive mode has no limited outputs to measure pressure from would help.

This is not a logic error — the behavior is correct given the design — but it is an operational observability gap.

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

In `@src/flb_engine.c` around lines 249 - 276,
flb_engine_get_chunk_backpressure_percent can silently return 0 when no output
has total_limit_size > 0; add a one-time debug hint by detecting when no limited
outputs were found (e.g., track a boolean saw_limited while iterating
config->outputs) and, if saw_limited is false, emit a flb_debug log stating that
flush.adaptive has no limited outputs to measure backpressure from; place this
check/log in flb_engine_get_chunk_backpressure_percent (use the existing
ins->total_limit_size and max_pressure variables) so operators see a diagnostic
when adaptive mode will always use the slowest interval.
tests/internal/engine_adaptive_flush.c (1)

33-64: LGTM — interval arithmetic and clamp checks are correct; floating-point equality is safe here.

All multiplied values (2.0, 1.0, 0.75, 0.5) and their products with the test flush values are exactly representable in IEEE 754 binary64, so direct == comparison is reliable. Level clamping and min/max bound clamping cases are well covered.

Consider adding a test case that exercises flb_engine_adaptive_flush_init with an inverted threshold ordering (e.g., high_pressure = -5) to catch the validation gap flagged in src/flb_engine.c lines 451–469.

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

In `@tests/internal/engine_adaptive_flush.c` around lines 33 - 64, Add a new unit
test that exercises flb_engine_adaptive_flush_init with inverted pressure
thresholds (e.g., call flb_engine_adaptive_flush_init(config, high_pressure =
-5, low_pressure = 5) after flb_config_init()), and assert the function either
fails (non-zero/negative return) or normalizes the values by ensuring the
resulting thresholds are in correct order (high >= low); reference
flb_engine_adaptive_flush_init and the config object to locate where to add the
check so the test detects the validation gap flagged in src/flb_engine.c.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Duplicate comments:
In `@src/flb_engine.c`:
- Around line 451-469: The three adaptive pressure fields
(config->flush_adaptive_low_pressure, config->flush_adaptive_medium_pressure,
config->flush_adaptive_high_pressure) must each be independently clamped to the
valid range [0.0, 100.0] before enforcing ordering; update the init logic so you
floor any value < 0.0 to 0.0 and cap any value > 100.0 to 100.0 for all three
fields, then apply the existing ordering corrections that copy low->medium or
high->medium as needed (i.e., perform the per-field clamps first, then run the
comparisons that adjust flush_adaptive_medium_pressure).

---

Nitpick comments:
In `@src/flb_engine.c`:
- Around line 249-276: flb_engine_get_chunk_backpressure_percent can silently
return 0 when no output has total_limit_size > 0; add a one-time debug hint by
detecting when no limited outputs were found (e.g., track a boolean saw_limited
while iterating config->outputs) and, if saw_limited is false, emit a flb_debug
log stating that flush.adaptive has no limited outputs to measure backpressure
from; place this check/log in flb_engine_get_chunk_backpressure_percent (use the
existing ins->total_limit_size and max_pressure variables) so operators see a
diagnostic when adaptive mode will always use the slowest interval.

In `@tests/internal/engine_adaptive_flush.c`:
- Around line 33-64: Add a new unit test that exercises
flb_engine_adaptive_flush_init with inverted pressure thresholds (e.g., call
flb_engine_adaptive_flush_init(config, high_pressure = -5, low_pressure = 5)
after flb_config_init()), and assert the function either fails
(non-zero/negative return) or normalizes the values by ensuring the resulting
thresholds are in correct order (high >= low); reference
flb_engine_adaptive_flush_init and the config object to locate where to add the
check so the test detects the validation gap flagged in src/flb_engine.c.

ℹ️ Review info

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between bc55331 and c42c4ff.

📒 Files selected for processing (5)
  • conf/fluent-bit.conf
  • include/fluent-bit/flb_engine.h
  • src/flb_engine.c
  • tests/internal/CMakeLists.txt
  • tests/internal/engine_adaptive_flush.c
🚧 Files skipped from review as they are similar to previous changes (2)
  • conf/fluent-bit.conf
  • include/fluent-bit/flb_engine.h

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.

1 participant