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

Add a limit that caps the maximum allowed size of an attribute #3985

Open
09jvilla opened this issue Aug 20, 2024 · 1 comment · May be fixed by #4335
Open

Add a limit that caps the maximum allowed size of an attribute #3985

09jvilla opened this issue Aug 20, 2024 · 1 comment · May be fixed by #4335
Assignees
Labels
area/ingestion keepalive Label to exempt Issues / PRs from stale workflow

Comments

@09jvilla
Copy link
Contributor

Is your feature request related to a problem? Please describe.
When trying to fetch traces that have spans with very large attributes, the Tempo queriers run out of memory and crash. We've observed this when trying to fetch a single trace using the tracebyID endpoint). The trace itself didn't have a ton of spans (roughly 500), but it was very large in size (approximately 250KB). It was very large because some of the spans in that trace had attributes whose values were very large in size.

Describe the solution you'd like
One way to avoid these out-of-memory crashes to create a limit on the maximum allowable size of any individual attribute. On the ingest path, Tempo would then reject any spans that had attributes above this size. Or possibly it could store the span, but throw out the specific attribute that was above the size limit.

If those spans were never ingested, they would not exist to be queried, and therefore could not crash the queriers when fetched.

Additional context
This solution obviously comes with the tradeoff that the very large attribute does not get stored in the database, which may be problematic if the user actually wanted to store and later read back that attribute.

We're essentially making that assumption that above a certain size, it really doesn't make sense for something to be an attribute value, and likely what's getting sent in is just garbage or possibly the result of a misconfiguration. What that "certain size" is is of course a bit subjective.

Copy link
Contributor

This issue has been automatically marked as stale because it has not had any activity in the past 60 days.
The next time this stale check runs, the stale label will be removed if there is new activity. The issue will be closed after 15 days if there is no new activity.
Please apply keepalive label to exempt this Issue.

@github-actions github-actions bot added the stale Used for stale issues / PRs label Oct 20, 2024
@joe-elliott joe-elliott added keepalive Label to exempt Issues / PRs from stale workflow and removed stale Used for stale issues / PRs labels Oct 21, 2024
@ie-pham ie-pham self-assigned this Oct 23, 2024
@ie-pham ie-pham moved this from Next to In Progress in Tempo squad Nov 17, 2024
@ie-pham ie-pham linked a pull request Nov 17, 2024 that will close this issue
3 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/ingestion keepalive Label to exempt Issues / PRs from stale workflow
Projects
Status: In Progress
Development

Successfully merging a pull request may close this issue.

3 participants