[SERVER-51391] Enable lock free reads for aggregation Created: 06/Oct/20  Updated: 21/Oct/20  Resolved: 21/Oct/20

Status: Closed
Project: Core Server
Component/s: Storage
Affects Version/s: None
Fix Version/s: None

Type: Task Priority: Major - P3
Reporter: Dianna Hohensee (Inactive) Assignee: Dianna Hohensee (Inactive)
Resolution: Duplicate Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Duplicate
duplicates SERVER-51677 MaybeLockFree helpers should check di... Closed
Related
is related to SERVER-51658 Add concurrency safe Database/ViewCat... Closed
Sprint: Execution Team 2020-11-02
Participants:

 Description   

This requires some additional ViewCatalog utilities to support lock free reads.

The aggregation code independently of the AutoGetCollectionForRead* helper fetches the ViewCatalog and does lookup() and resolveView() several times. For example.

We need to verify that the ViewCatalog is safe to access multiple times. Perhaps the AutoGetCollectionForRead* helper should save a shared_ptr<ViewCatalog> instance. Accessing the ViewCatalog multiple times across time may not be an inconsistency issue of concern (needs investigation). Alternatively again, maybe a new function on ViewCatalog, like ViewCatalog::getLockFreeState() that will fetch both ViewDefinition and ResolvedView all at once. May need new DatabaseHolder passthrough functions that take dbName and fetch a corresponding Database instance and access the ViewCatalog under an internal mutex's protection.


Generated at Thu Feb 08 05:25:21 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.