-
Notifications
You must be signed in to change notification settings - Fork 853
Add thread name back in #21791
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
Open
jvolmer
wants to merge
18
commits into
devel
Choose a base branch
from
feature/save-thread-infos-in-separate-structure-for-async-registry
base: devel
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Add thread name back in #21791
jvolmer
wants to merge
18
commits into
devel
from
feature/save-thread-infos-in-separate-structure-for-async-registry
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
jbajic
reviewed
Jun 2, 2025
arangod/SystemMonitor/AsyncRegistry/PrettyPrinter/src/asyncregistry/gdb_data.py
Outdated
Show resolved
Hide resolved
jbajic
approved these changes
Jun 3, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM!
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
PR got rid of printing the involved thread names in the async registry due to a bug. This PR adds the thread name back in, but now we directly save the thread name string when creating the
ThreadInfo
object that includes all needed thread infos for the async registry. We use thisThreadInfo
object several times. To save the object - and therefore the string - only once, we wrap the ThreadInfo object into a shared resource object. AThreadInfo
instance is deleted when all its references are gone.With this PR we use the shared
ThreadInfo
resource in two places of a promise in the async registry:Due to these requirements, the PR adds a new
SharedResource
that now wraps theThreadInfo
and has an atomic reference counter.For 1. we don't need any synchronization, therefore the owning thead is a
SharedPtr
, which only takes care of properly incrementing and decrementing the reference counter of theSharedResource
.For 2. we need synchronization and we wrote our own
AtomicSharedOrRawPtr
, wich is a lock-free either-or type that includes an atomic pointer to either aSharedResource
or a raw pointer (which in our case is a void pointer - we identify a promise by its this pointer and cast that - due to usability reasons - to a void ptr. This PR actually wraps this void ptr now into aPromiseId
type to make it a bit better readable).There is now one more member in a promise that needs to reference the new
ThreadInfo
: The running_thread currently still uses the oldThreadId
type that does not include a thread name string. This will be part of another PR.