Skip to content

feat(internal): thread pool - #1883

Merged
jpnurmi merged 20 commits into
masterfrom
jpnurmi/perf/thread-pool
Aug 12, 2026
Merged

feat(internal): thread pool#1883
jpnurmi merged 20 commits into
masterfrom
jpnurmi/perf/thread-pool

Conversation

@jpnurmi

@jpnurmi jpnurmi commented Jul 17, 2026

Copy link
Copy Markdown
Collaborator

Introduce a generic thread pool that runs tasks in parallel in a predetermined number of pooled threads and invokes completion callbacks in submission order. The primary use case is the telemetry serialization pool coming in #1946, but it could be used for offloading other heavy tasks, too.

See usage in #1946:

#skip-changelog (internal)

@github-actions

github-actions Bot commented Jul 17, 2026

Copy link
Copy Markdown
Messages
📖 Do not forget to update Sentry-docs with your feature once the pull request gets approved.

Generated by 🚫 dangerJS against 7f9c7b5

Comment thread src/sentry_telemetry.c
Comment thread src/sentry_batcher.c Outdated
@codecov

codecov Bot commented Jul 17, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 84.46970% with 41 lines in your changes missing coverage. Please review.
✅ Project coverage is 74.31%. Comparing base (219d934) to head (7f9c7b5).
⚠️ Report is 12 commits behind head on master.

Additional details and impacted files
@@            Coverage Diff             @@
##           master    #1883      +/-   ##
==========================================
- Coverage   76.01%   74.31%   -1.71%     
==========================================
  Files          94      104      +10     
  Lines       22183    25625    +3442     
  Branches     3937     4622     +685     
==========================================
+ Hits        16863    19043    +2180     
- Misses       4436     5283     +847     
- Partials      884     1299     +415     
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@jpnurmi
jpnurmi force-pushed the jpnurmi/perf/thread-pool branch from 2996a56 to ec39dc8 Compare July 22, 2026 14:55
Comment thread src/backends/sentry_backend_inproc.c
Comment thread src/sentry_batcher.c Outdated
@jpnurmi
jpnurmi force-pushed the jpnurmi/perf/thread-pool branch from ec39dc8 to 829189b Compare July 22, 2026 15:14
Comment thread src/backends/sentry_backend_breakpad.cpp
@jpnurmi
jpnurmi force-pushed the jpnurmi/perf/thread-pool branch from 829189b to 406b054 Compare July 22, 2026 15:47
Comment thread src/sentry_batcher.c Outdated
Comment thread src/sentry_telemetry.c Outdated
@jpnurmi
jpnurmi force-pushed the jpnurmi/perf/thread-pool branch from 406b054 to 03159d6 Compare July 22, 2026 16:02
Comment thread src/sentry_batcher.c Outdated
Comment thread src/sentry_batcher.c Outdated
Comment thread src/sentry_transport.c
Comment thread src/sentry_telemetry.c Outdated
@jpnurmi
jpnurmi force-pushed the jpnurmi/perf/thread-pool branch from e417bed to 12f4872 Compare July 24, 2026 10:19
Comment thread src/sentry_telemetry.c Outdated
Comment thread src/sentry_batcher.c Outdated
@jpnurmi
jpnurmi force-pushed the jpnurmi/perf/thread-pool branch 4 times, most recently from 33f0d1a to d39154d Compare August 3, 2026 08:43
@jpnurmi
jpnurmi changed the base branch from master to jpnurmi/ref/transport-crash-dump August 3, 2026 08:55
@jpnurmi
jpnurmi force-pushed the jpnurmi/perf/thread-pool branch from d39154d to 9dee343 Compare August 3, 2026 09:39
@jpnurmi
jpnurmi force-pushed the jpnurmi/perf/thread-pool branch 2 times, most recently from 265b68d to 8c2f921 Compare August 3, 2026 12:53
Base automatically changed from jpnurmi/ref/spinlock to master August 6, 2026 14:45
@jpnurmi
jpnurmi force-pushed the jpnurmi/perf/thread-pool branch from 143a50b to 6ca0dce Compare August 6, 2026 14:46
@jpnurmi
jpnurmi requested a review from limbonaut August 10, 2026 11:06

@limbonaut limbonaut left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Epic work!🦸 The chart from the stacked follow-up shows exactly how useful this can be. I really like the idea of a flexible ordered worker queue with pooled threads. Quite a brain-crack to review 😄 I only have one concern, and a naming nit.

Comment thread src/sentry_sync.c
Comment thread src/sentry_sync.c Outdated

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit e7f44dd. Configure here.

Comment thread tests/unit/test_sync.c Outdated

@JoshuaMoelans JoshuaMoelans left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

This is a very cool feature, learned a lot reading up on thread-pooling! LGTM, with just a nit and two questions remaining.

Comment thread src/sentry_sync.c
Comment thread src/sentry_sync.c
Comment thread src/sentry_sync.c Outdated
@jpnurmi
jpnurmi merged commit c8d73c3 into master Aug 12, 2026
66 checks passed
@jpnurmi
jpnurmi deleted the jpnurmi/perf/thread-pool branch August 12, 2026 14:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants