getsentry / getsentry/sentry-java

Micrometer OpenTelemetry support

Open
#3,474 18 comments 0 reactions 1 assignee Claimed by @adinauer View on GitHub
Feature Java Spans
Dominant language
Kotlin
Stars
1.4k
Forks
478
Avg merge
2d 23h
Merged PRs (30d)
67

Description

### Integration

sentry-spring-jakarta

### Java Version

17

### Version

7.8.0

### Steps to Reproduce

While profiling some reactive code using project Reactor with automatic context propagation and Sentry, I noticed quite a lot of time is spent instantiating `SecureRandom` objects as the `SentryReactorThreadLocalAccessor.getValue` call will always cause a new `TracesSampler` thus a new `SecureRandom` object to be created when `hub == null || hub instanceof NoOpHub` in `Sentry#getCurrentHub`.

SecureRandom objects are said to be thread-safe by the javadoc, would it be possible/safe to just reuse the same instance? Or reuse the TracesSampler? Or avoid cloning the NoOpHub alltogether..?

### Expected Result

Not so much time spent creating SecureRandom objects

### Actual Result

Screenshot of profiling results:

Screenshot 2024-06-11 at 21 17 17

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.