-
Notifications
You must be signed in to change notification settings - Fork 818
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
Implements concurrent segmented queues #638
Conversation
This reverts commit 9309d92.
c834b24
to
a680d74
Compare
…data in the same buffer and writing that raw data
…load that crossed 2 segments
…PayloadFromSegments
Is there a way to discard/close a queue? For example when the client reconnects with cleanSession=true? |
@hylkevds good to remind it, I haven't yet thought about :-) |
… offsets to the respective physical segments, which permits to have not monitically incrementing segments and put the basis for segments reuse and limiting holes (external fragmentation) in page files
…when reload from checksum file
- one that advanced twice a pointer (newSegmentPointer) - fixed calculation of availableDataLength in a segment while writing payload across two segments
Superseeded by #691 |
Release notes
Introduce new persistent queue implementation based on concurrent access to segmented queues.
What does this PR do?
All queues are saved in segments, each segment in stored in a memory mapped region named page where each page can contains multiple segments of different queues. The access to the segment is based on CAS operator on such named
SegmentPointer
objects, when the CAS is not possible a retry is repeated until newSegment
access is required, in which case the access is managed by a usual lock guarded sectionWhy is it important/What is the impact to the user?