dangerous_override: add overrides for derived data manager

Summary: Add overrides for changesets, filenodes and bonsai_hg_mapping in the derived data manager.

Reviewed By: yancouto

Differential Revision: D31378456

fbshipit-source-id: b1faa543ca65fa041d2d0ddc908ea5fb950d023a
This commit is contained in:
Mark Juggurnauth-Thomas 2021-10-04 06:58:02 -07:00 committed by Facebook GitHub Bot
parent 18742d1bdc
commit 9aa5c6a64a
3 changed files with 77 additions and 0 deletions

View File

@ -87,10 +87,15 @@ impl DangerousOverride<ArcChangesets> for BlobRepoInner {
let changesets = modify(self.changesets.clone());
let changeset_fetcher =
Arc::new(SimpleChangesetFetcher::new(changesets.clone(), self.repoid));
let repo_derived_data = Arc::new(
self.repo_derived_data
.with_replaced_changesets(changesets.clone()),
);
Self {
changesets,
changeset_fetcher,
repo_derived_data,
..self.clone()
}
}
@ -102,8 +107,13 @@ impl DangerousOverride<ArcFilenodes> for BlobRepoInner {
F: FnOnce(ArcFilenodes) -> ArcFilenodes,
{
let filenodes = modify(self.filenodes.clone());
let repo_derived_data = Arc::new(
self.repo_derived_data
.with_replaced_filenodes(filenodes.clone()),
);
Self {
filenodes,
repo_derived_data,
..self.clone()
}
}
@ -115,8 +125,13 @@ impl DangerousOverride<ArcBonsaiHgMapping> for BlobRepoInner {
F: FnOnce(ArcBonsaiHgMapping) -> ArcBonsaiHgMapping,
{
let bonsai_hg_mapping = modify(self.bonsai_hg_mapping.clone());
let repo_derived_data = Arc::new(
self.repo_derived_data
.with_replaced_bonsai_hg_mapping(bonsai_hg_mapping.clone()),
);
Self {
bonsai_hg_mapping,
repo_derived_data,
..self.clone()
}
}

View File

@ -93,6 +93,39 @@ impl DerivedDataManager {
}
}
// For dangerous-override: allow replacement of changesets
pub fn with_replaced_changesets(&self, changesets: Arc<dyn Changesets>) -> Self {
Self {
inner: Arc::new(DerivedDataManagerInner {
changesets,
..self.inner.as_ref().clone()
}),
}
}
// For dangerous-override: allow replacement of bonsai-hg-mapping
pub fn with_replaced_bonsai_hg_mapping(
&self,
bonsai_hg_mapping: Arc<dyn BonsaiHgMapping>,
) -> Self {
Self {
inner: Arc::new(DerivedDataManagerInner {
bonsai_hg_mapping,
..self.inner.as_ref().clone()
}),
}
}
// For dangerous-override: allow replacement of filenodes
pub fn with_replaced_filenodes(&self, filenodes: Arc<dyn Filenodes>) -> Self {
Self {
inner: Arc::new(DerivedDataManagerInner {
filenodes,
..self.inner.as_ref().clone()
}),
}
}
pub fn repo_id(&self) -> RepositoryId {
self.inner.repo_id
}

View File

@ -76,6 +76,35 @@ impl RepoDerivedData {
}
}
// For dangerous-override: allow replacement of changesets
pub fn with_replaced_changesets(&self, changesets: Arc<dyn Changesets>) -> Self {
Self {
config: self.config.clone(),
manager: self.manager.with_replaced_changesets(changesets),
}
}
// For dangerous-override: allow replacement of bonsai-hg-mapping
pub fn with_replaced_bonsai_hg_mapping(
&self,
bonsai_hg_mapping: Arc<dyn BonsaiHgMapping>,
) -> Self {
Self {
config: self.config.clone(),
manager: self
.manager
.with_replaced_bonsai_hg_mapping(bonsai_hg_mapping),
}
}
// For dangerous-override: allow replacement of filenodes
pub fn with_replaced_filenodes(&self, filenodes: Arc<dyn Filenodes>) -> Self {
Self {
config: self.config.clone(),
manager: self.manager.with_replaced_filenodes(filenodes),
}
}
/// Current derived data configuration for this repo.
pub fn config(&self) -> &DerivedDataConfig {
&self.config