Skip to content
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

[master < T0968] - Fix concurrent query module racecondition #1158

Merged
merged 10 commits into from
Aug 21, 2023

Conversation

gvolfing
Copy link
Contributor

@gvolfing gvolfing commented Aug 10, 2023

Concurrent access to the same query module had a race condition on the pointer that was used to handle the custom memory management. With this commit, a mapping has been added to keep information about what thread used the pointer to handle the memory resources. This should be fine since the respected query executions are running on a dedicated thread. Access to the mapping itself is threadsafe. A simple RAII wrapper for the mapping container has also been added for simpler client-side use.

Closes #968

Concurrent access to the same query module had a racecondition on the
pointer that was used to handle the costum memory management. With this
commit, a mapping has been added that keeps information about what
thread used what pointer to handle the memory resources. Which should be
fine since the respected query executions are running on a dedicated
thread. Access to the mapping itself is threadsafe. A simple spinlock
has been implemented here, as we shouldn't include memgraph::utils from
this header and a traditional mutex might be overkill. A simple RAII
wrapper for the mapping container has been also added for simpler
client-side use.
@gitbuda gitbuda added the bug bug label Aug 16, 2023
@gvolfing gvolfing marked this pull request as ready for review August 17, 2023 10:12
Copy link
Contributor

@Josipmrden Josipmrden left a comment

Choose a reason for hiding this comment

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

Some comments but overall good job!

Co-authored-by: Josipmrden <josip.mrden@memgraph.io>
@gitbuda gitbuda merged commit 476968e into master Aug 21, 2023
6 checks passed
@gitbuda gitbuda deleted the T0968-fix-cpp-query-module-race-condition branch August 21, 2023 14:45
gitbuda pushed a commit that referenced this pull request Aug 21, 2023
Concurrent access to the same query module had a race condition on the
pointer that was used to handle the custom memory management. With this
commit, a mapping has been added to keep information about what
thread used the pointer to handle the memory resources. This should be
fine since the respected query executions are running on a dedicated
thread. Access to the mapping itself is threadsafe. A simple RAII
wrapper for the mapping container has also been added for simpler
client-side use.
as51340 pushed a commit that referenced this pull request Nov 10, 2023
Concurrent access to the same query module had a race condition on the
pointer that was used to handle the custom memory management. With this
commit, a mapping has been added to keep information about what
thread used the pointer to handle the memory resources. This should be
fine since the respected query executions are running on a dedicated
thread. Access to the mapping itself is threadsafe. A simple RAII
wrapper for the mapping container has also been added for simpler
client-side use.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug bug
Projects
Development

Successfully merging this pull request may close these issues.

[BUG] C++ Query modules are not thread safe
3 participants