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.
expected to fix #511
It was observed that
QueuedFileData
has aFileId
member, and it's copied, therefore not RT-safe.This implements the file queue in a different strategy, and removed problematic code at the same time.
replace
FileId Region::sampleId
with a shared pointer.That permits to pass it in the message queue, without worrying about a corruption in case the region gets removed while the FileId is still in the queue.
the queued file data receives a
id
member of typeweak_ptr
, meaning it auto-nulls itself if the Region gets deleted.In this model, the
FilePool
must null-check theid
at relevant places to check that the request is still valid.Since it auto-nulls on erasing regions, we don't need
emptyFileLoadingQueues
, loading jobs will clean themselves.