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

parser_json: keep time key when parsing fails #7323

Merged
merged 3 commits into from May 5, 2023

Conversation

braydonk
Copy link
Contributor

@braydonk braydonk commented May 4, 2023

This PR will cause the json parser to retain the time field if parsing the time key fails.

Resolves #7322


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.

The documentation appears to suggest that the time key is discarded from
the key after it is "found and parsed", however in the current setup the
key is discarded even when parsing fails. This commit resets the `skip`
value if the time key parsing fails.

Signed-off-by: braydonk <braydonk@google.com>
If skip is not set due to the time key parse failing, don't reset the
msgpack map size.

Signed-off-by: braydonk <braydonk@google.com>
Add a test for a JSON that fails timestamp parsing to verify that the
time key remains in the result.

Signed-off-by: braydonk <braydonk@google.com>
@braydonk braydonk temporarily deployed to pr May 4, 2023 18:33 — with GitHub Actions Inactive
@braydonk braydonk temporarily deployed to pr May 4, 2023 18:33 — with GitHub Actions Inactive
@braydonk braydonk temporarily deployed to pr May 4, 2023 18:33 — with GitHub Actions Inactive
@braydonk braydonk temporarily deployed to pr May 4, 2023 18:56 — with GitHub Actions Inactive
@leonardo-albertovich
Copy link
Collaborator

Thanks for the contribution @braydonk, do you want to backport this to 2.0 or would you rather have someone from the team do it?

@braydonk
Copy link
Contributor Author

braydonk commented May 5, 2023

As long as this change is acceptable and merged in main, I can do the backport to 2.0!

@patrick-stephens
Copy link
Contributor

Looks good to me, just the usual macOS flakes.

@leonardo-albertovich leonardo-albertovich merged commit 5864c41 into fluent:master May 5, 2023
40 of 43 checks passed
@braydonk braydonk mentioned this pull request May 5, 2023
7 tasks
leonardo-albertovich pushed a commit that referenced this pull request May 5, 2023
parser_json: do not skip time key when parse fails

The documentation appears to suggest that the time key is discarded from
the key after it is "found and parsed", however in the current setup the
key is discarded even when parsing fails. This commit resets the `skip`
value if the time key parsing fails.

Additionally, an internal test case has been added for parser_json to validate 
the correction.

Note: This PR is a backport of PR #7323

Signed-off-by: braydonk <braydonk@google.com>
@leonardo-albertovich
Copy link
Collaborator

Thank you very much for the patch and for taking the time to backport it @braydonk.

@braydonk
Copy link
Contributor Author

braydonk commented May 5, 2023

No problem! Glad we got this resolved.

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.

Time_Key is dropped even when not parsed successfully in json parser
3 participants