From 4dc0f1aa0d6e290f8e8da49d42f0789ea9f4e788 Mon Sep 17 00:00:00 2001 From: "Eric D. Schabell" Date: Sat, 26 Sep 2026 11:12:33 +0200 Subject: [PATCH] docs: pipeline: parsers: json: document nesting depth limit Add a Nesting depth limit section covering the 32 level cap the JSON parser applies when converting log entries to the internal binary representation: - The outermost object counts as the first level. - Entries nested deeper fail to parse. - The rejection is silent, so such a record is indistinguishable from one rejected for malformed JSON. Upstream commit 78b8e42bb bounded yyjson_val_to_msgpack(), which recursed without a limit in v5.1.2 and earlier. Signed-off-by: Eric D. Schabell --- pipeline/parsers/json.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/pipeline/parsers/json.md b/pipeline/parsers/json.md index 503847aa7..491467c78 100644 --- a/pipeline/parsers/json.md +++ b/pipeline/parsers/json.md @@ -44,3 +44,11 @@ After processing, its internal representation will be: ``` The time was converted to a UTC timestamp and the map was reduced to each component of the original message. + +## Nesting depth limit + +In Fluent Bit version 5.1.3 and greater, this parser accepts at most 32 levels of nested objects and arrays. The outermost object counts as the first level. + +A log entry nested deeper than this limit fails to parse. Fluent Bit doesn't log a message that identifies the nesting depth as the cause, so a record that's rejected for this reason looks the same as a record rejected for malformed JSON. If records that appear to be valid JSON are being dropped, check how deeply they nest. + +Because the limit applies while the JSON is converted to the internal binary representation, it applies to the whole log entry, not to individual keys.