Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FluentBit returning random extra payload when using multiple [MULTILINE_PARSER] patterns #9756

Open
ASchneider-GitHub opened this issue Dec 20, 2024 · 0 comments

Comments

@ASchneider-GitHub
Copy link

Bug Report

I have these logs:

[18Dec2024 16:42:22.755] [KubeJS Recipe Event Worker 0/DEBUG] [cofh.lib.util.recipes.RecipeJsonUtils/]: Invalid Ingredient - using EMPTY instead!
com.google.gson.JsonSyntaxException: Unknown item 'allthecompressed:cobbled_deepslate_block_9x'
at net.minecraft.world.item.crafting.ShapedRecipe.m_151280_(ShapedRecipe.java:292) ~[client-1.20.1-20230612.114412-srg.jar%231008!/:?]
at java.util.Optional.orElseThrow(Optional.java:403) ~[?:?]
at net.minecraft.world.item.crafting.ShapedRecipe.m_151278_(ShapedRecipe.java:291) ~[client-1.20.1-20230612.114412-srg.jar%231008!/:?]
[18Dec2024 16:42:22.797] [KubeJS Recipe Event Worker 0/WARN] [KubeJS Server/]: Error parsing recipe thermal:furnace/allthecompressed/terracotta/5x[thermal:furnace]: {"type":"thermal:furnace","ingredient":{"item":"allthecompressed:clay_block_5x","count":1},"result":{"item":"allthecompressed:terracotta_block_5x"},"energy":1200000,"conditions":[{"type":"forge:and","values":[{"type":"forge:not","value":{"type":"forge:mod_loaded","modid":"compressium"}},{"type":"forge:mod_loaded","modid":"thermal"}]}]}: Invalid Thermal Series recipe: thermal:furnace/allthecompressed/terracotta/5x
Refer to the recipe's ResourceLocation to find the mod responsible and let them know!
[18Dec2024 16:40:22.872] [main/ERROR] [net.minecraftforge.coremod.transformer.CoreModBaseTransformer/COREMOD]: Error occurred applying transform of coremod coremods/field_to_method.js function biome
java.lang.IllegalStateException: Field f_47437_ is not private and an instance field
at net.minecraftforge.coremod.api.ASMAPI.redirectFieldToMethod(ASMAPI.java:270) ~[coremods-5.1.6.jar:?]
at org.openjdk.nashorn.internal.scripts.Script$Recompilation$115$292A$\^eval\_.initializeCoreMod#transformer(<eval>:11) ~[?:?]
at org.openjdk.nashorn.internal.runtime.ScriptFunctionData.invoke(ScriptFunctionData.java:648) ~[nashorn-core-15.3.jar:?]

and I have these parsers:

[MULTILINE_PARSER]
    name          kubejs-recipe-event-worker-debug
    type          regex
    flush_timeout 1000
    rule      "start_state"   "/^.*\[KubeJS Recipe Event Worker \d\/DEBUG\].*/"  "cont"
    rule      "cont"          "/^(com|java|\t).*/"                     "cont"

[MULTILINE_PARSER]
    name          kubejs-recipe-event-worker-warn-recipe-parse-error
    type          regex
    flush_timeout 1000
    rule      "start_state"   "/^.*\[KubeJS Recipe Event Worker \d\/WARN\].*/"  "cont"
    rule      "cont"          "/^Refer.*/"                     "cont"

[MULTILINE_PARSER]
    name          main-thread-error
    type          regex
    flush_timeout 1000
    rule      "start_state"   "/^.*\[main\/ERROR\].*/"  "cont"
    rule      "cont"          "/^(com|java|\t).*/"                     "cont"

and this is my fluent.conf file

[SERVICE]
    parsers_file C:\Users\Alex\Desktop\realFBTesting\parsers_multiline.conf

[INPUT]
    name             tail
    read_from_head   true
    path             C:\Users\Alex\Desktop\realFBTesting\test.log
    multiline.parser kubejs-recipe-event-worker-debug, kubejs-recipe-event-worker-warn-recipe-parse-error, main-thread-error

[OUTPUT]
    name             stdout
    match            *

When I run FluentBit to test the config with

PS C:\Program Files\fluent-bit\bin> .\fluent-bit.exe -vc C:\Users\Alex\Desktop\realFBTesting\fluent-bit.conf

I would expect to get three payloads (one for each parser). Instead this is the output I get:

[0] tail.0: [[1734717157.567392300, {}], {"log"=>"[18Dec2024 16:42:22.755] [KubeJS Recipe Event Worker 0/DEBUG] [cofh.lib.util.recipes.RecipeJsonUtils/]: Invalid Ingredient - using EMPTY instead!
com.google.gson.JsonSyntaxException: Unknown item 'allthecompressed:cobbled_deepslate_block_9x'
        at net.minecraft.world.item.crafting.ShapedRecipe.m_151280_(ShapedRecipe.java:292) ~[client-1.20.1-20230612.114412-srg.jar%231008!/:?]
        at java.util.Optional.orElseThrow(Optional.java:403) ~[?:?]
        at net.minecraft.world.item.crafting.ShapedRecipe.m_151278_(ShapedRecipe.java:291) ~[client-1.20.1-20230612.114412-srg.jar%231008!/:?]
"}]
[1] tail.0: [[1734717157.567434100, {}], {"log"=>"[18Dec2024 16:42:22.797] [KubeJS Recipe Event Worker 0/WARN] [KubeJS Server/]: Error parsing recipe thermal:furnace/allthecompressed/terracotta/5x[thermal:furnace]: {"type":"thermal:furnace","ingredient":{"item":"allthecompressed:clay_block_5x","count":1},"result":{"item":"allthecompressed:terracotta_block_5x"},"energy":1200000,"conditions":[{"type":"forge:and","values":[{"type":"forge:not","value":{"type":"forge:mod_loaded","modid":"compressium"}},{"type":"forge:mod_loaded","modid":"thermal"}]}]}: Invalid Thermal Series recipe: thermal:furnace/allthecompressed/terracotta/5x
Refer to the recipe's ResourceLocation to find the mod responsible and let them know!
"}]
[2] tail.0: [[1734717157.567392300, {}], {"log"=>"java.lang.IllegalStateException: Field f_47437_ is not private and an instance field
        at net.minecraftforge.coremod.api.ASMAPI.redirectFieldToMethod(ASMAPI.java:270) ~[coremods-5.1.6.jar:?]
        at org.openjdk.nashorn.internal.scripts.Script$Recompilation$115$292A$\^eval\_.initializeCoreMod#transformer(<eval>:11) ~[?:?]
        at org.openjdk.nashorn.internal.runtime.ScriptFunctionData.invoke(ScriptFunctionData.java:648) ~[nashorn-core-15.3.jar:?]
"}]
[3] tail.0: [[1734717157.567456000, {}], {"log"=>"[18Dec2024 16:40:22.872] [main/ERROR] [net.minecraftforge.coremod.transformer.CoreModBaseTransformer/COREMOD]: Error occurred applying transform of coremod coremods/field_to_method.js function biome
java.lang.IllegalStateException: Field f_47437_ is not private and an instance field
        at net.minecraftforge.coremod.api.ASMAPI.redirectFieldToMethod(ASMAPI.java:270) ~[coremods-5.1.6.jar:?]
        at org.openjdk.nashorn.internal.scripts.Script$Recompilation$115$292A$\^eval\_.initializeCoreMod#transformer(<eval>:11) ~[?:?]
        at org.openjdk.nashorn.internal.runtime.ScriptFunctionData.invoke(ScriptFunctionData.java:648) ~[nashorn-core-15.3.jar:?]
"}]

Shown above, FluentBit seems to be generating a payload ([2]) where the parsed log output is lines that would only be matched by the final cont statement from the main-thread-error parsing rule. What's strange is that if I remove the top stack trace log and just run it with the kubejs-recipe-event-worker-warn-recipe-parse-error and main-thread-error messages then the output looks fine:

[0] tail.0: [[1734717434.427587000, {}], {"log"=>"[18Dec2024 16:42:22.797] [KubeJS Recipe Event Worker 0/WARN] [KubeJS Server/]: Error parsing recipe thermal:furnace/allthecompressed/terracotta/5x[thermal:furnace]: {"type":"thermal:furnace","ingredient":{"item":"allthecompressed:clay_block_5x","count":1},"result":{"item":"allthecompressed:terracotta_block_5x"},"energy":1200000,"conditions":[{"type":"forge:and","values":[{"type":"forge:not","value":{"type":"forge:mod_loaded","modid":"compressium"}},{"type":"forge:mod_loaded","modid":"thermal"}]}]}: Invalid Thermal Series recipe: thermal:furnace/allthecompressed/terracotta/5x
Refer to the recipe's ResourceLocation to find the mod responsible and let them know!
"}]
[1] tail.0: [[1734717434.427619200, {}], {"log"=>"[18Dec2024 16:40:22.872] [main/ERROR] [net.minecraftforge.coremod.transformer.CoreModBaseTransformer/COREMOD]: Error occurred applying transform of coremod coremods/field_to_method.js function biome
java.lang.IllegalStateException: Field f_47437_ is not private and an instance field
        at net.minecraftforge.coremod.api.ASMAPI.redirectFieldToMethod(ASMAPI.java:270) ~[coremods-5.1.6.jar:?]
        at org.openjdk.nashorn.internal.scripts.Script$Recompilation$115$292A$\^eval\_.initializeCoreMod#transformer(<eval>:11) ~[?:?]
        at org.openjdk.nashorn.internal.runtime.ScriptFunctionData.invoke(ScriptFunctionData.java:648) ~[nashorn-core-15.3.jar:?]
"}]

I've had other parsing rules fail in similar way, where partial paylods are being created, almost always with just the values from a cont statement being included. It doesn't seem to matter what stack trace I remove, but FluentBit completely breaks down if they're both there. Does anyone have ideas why this is, or how to stop it?

Your Environment

  • Version used: Fluent Bit v3.2.2
  • Environment name and version (e.g. Kubernetes? What version?): Windows 10 Home-based installation w/ single tail-d log file
  • Server type and version: N/A
  • Operating System and version: Windows 10 Home v10.0.19045 Build 19045

Additional context
I'm attempting to use multiple multiline regex filters against the log file to make single paylods that are easy to read as output. I can't change the format of the logs since the actual application throws errors created by different unrelated individuals. There's no expectation of consistency, so I'm making filters for each log style. Unfortunately the example in GitHub only has one filter in the file, so I don't have a reference for having a collection of multiline parsers in a single file.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant