Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
fallback to threadId -1 if it cannot be resolved
  • Loading branch information
lbloder committed Sep 23, 2025
commit 2295cba6d8e44fb6d97bd8c1a1bf3cfb2f1657ad
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@

public final class JfrAsyncProfilerToSentryProfileConverter extends JfrConverter {
private static final double NANOS_PER_SECOND = 1_000_000_000.0;
private static final long UNKNOWN_THREAD_ID = -1;

private final @NotNull SentryProfile sentryProfile = new SentryProfile();
private final @NotNull SentryStackTraceFactory stackTraceFactory;
Expand Down Expand Up @@ -113,13 +114,16 @@ public void visit(Event event, long samples, long value) {
}
}

private long resolveThreadId(int eventThreadId) {
return jfr.threads.get(eventThreadId) != null
? jfr.javaThreads.get(eventThreadId)
: eventThreadId;
private long resolveThreadId(int eventId) {
Long javaThreadId = jfr.javaThreads.get(eventId);
return javaThreadId != null ? javaThreadId : UNKNOWN_THREAD_ID;
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bug: Thread ID Resolution Issue

The resolveThreadId method now returns UNKNOWN_THREAD_ID (-1) when jfr.javaThreads lacks an entry for an event's thread. Previously, it would fall back to the original eventThreadId. This change means valid thread IDs without javaThreads metadata are lost, causing their associated samples and thread metadata to be skipped.

Fix in Cursor Fix in Web

}

private void processThreadMetadata(Event event, long threadId) {
if (threadId == UNKNOWN_THREAD_ID) {
return;
}

final String threadName = getPlainThreadName(event.tid);
sentryProfile
.getThreadMetadata()
Expand Down
Loading