mirror of
https://github.com/facebook/proxygen.git
synced 2025-08-08 18:02:05 +03:00
getdeps: make sure ManifestLoader never reloads manifests
Summary: In response to review feedback for D16477400 and D16477401, update `ManifestLoader.load_all_manifests()` to only update its data for projects that have not previously been loaded. This helps ensure that code using a single `ManifestLoader` object cannot have two in-memory `Manifest` objects for the same project, and that existing data (such as project hashes) can't be invalidated if a manifest is later loaded from updated on-disk data. Reviewed By: pkaush Differential Revision: D16586682 fbshipit-source-id: 50b1979ec55f2ad6901629cd852293a8f6ca903f
This commit is contained in:
committed by
Facebook Github Bot
parent
257019f6a7
commit
27447a971d
@@ -115,7 +115,15 @@ class ManifestLoader(object):
|
||||
|
||||
def load_all_manifests(self):
|
||||
if not self._loaded_all:
|
||||
self.manifests_by_name = self._loader.load_all(self.build_opts)
|
||||
all_manifests_by_name = self._loader.load_all(self.build_opts)
|
||||
if self.manifests_by_name:
|
||||
# To help ensure that we only ever have a single manifest object for a
|
||||
# given project, and that it can't change once we have loaded it,
|
||||
# only update our mapping for projects that weren't already loaded.
|
||||
for name, manifest in all_manifests_by_name.items():
|
||||
self.manifests_by_name.setdefault(name, manifest)
|
||||
else:
|
||||
self.manifests_by_name = all_manifests_by_name
|
||||
self._loaded_all = True
|
||||
|
||||
return self.manifests_by_name
|
||||
|
Reference in New Issue
Block a user