Skip to content

Non-blocking UUID generation for Spans #3325

@Andrevmatias

Description

@Andrevmatias

Problem Statement

The UUID generation for Spans is made using UUID.randomUUID() deep within the library and can't be replaced easily.

UUID.randomUUID() can be a blocking method depending on the Java distribution and OS configurations and it's resulting in a lot of our threads being blocked, impairing the system performance. We don't have control over the servers were our system is installed.

Also, the Spans and Transactions are created for every request regardless of whether it will be sent to Sentry. It occurs before the sampling process and is created even if sentry.traces-sample-rate is 0 or null. This creates a lot of UUIDs that I think are not even necessary.

Solution Brainstorm

  • Allow to set a non-blocking UUID generation fo Spans on Sentry initialization options
  • Expose the UUID generation method as a spring component/service so it can be overwritten
  • Create UUIDs just for the events that are effectively sent to Sentry
  • Allow to disable instrumentation completely through configuration without disabling sending other types of events.

┆Issue is synchronized with this Jira Improvement by Unito

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

Status

Done

Status

No status

Status

No status

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions