Clarify VehiclesForAgencyID lock ownership and fix test locking#796
Open
Adityatorgal17 wants to merge 1 commit intoOneBusAway:mainfrom
Open
Clarify VehiclesForAgencyID lock ownership and fix test locking#796Adityatorgal17 wants to merge 1 commit intoOneBusAway:mainfrom
Adityatorgal17 wants to merge 1 commit intoOneBusAway:mainfrom
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
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.
Summary
Clarifies static lock ownership for
vehicles-for-agencyand fixes missing test-side locking for static GTFS manager access.Changes
api.GtfsManager.RLock()for the full duration ofvehiclesForAgencyHandlerVehiclesForAgencyIDrequire caller-heldmanager.RLock()VehiclesForAgencyIDtest call sites to follow that contractRLock()in the OpenAPI conformance tests before static manager readsWhy
Previously,
vehiclesForAgencyHandleronly heldRLock()for the initial agency lookup, then released it before continuing with other static-dependent work such asVehiclesForAgencyIDand DB-backed route/reference reads.This split the handler's static reads across multiple lock windows instead of one clear snapshot boundary. During
ForceUpdate, static data, lookup maps, indexes, andGtfsDBare swapped under the write lock, so different parts of a single response could otherwise be built from different static snapshots.This change makes lock ownership explicit:
VehiclesForAgencyIDassumes the caller already holds itValidation Passed
Fixes #795