Move DerivedDataServiceRepo facet into repo_attributes

Summary: That facet was created prior any of repo_attributes, since now it's a default location for the facets, lets move it there

Reviewed By: yancouto

Differential Revision: D40382977

fbshipit-source-id: 856195c25472ca1d2080a605e091ecf754768b6c
This commit is contained in:
Egor Tkachenko 2022-10-19 03:25:06 -07:00 committed by Facebook GitHub Bot
parent 70cab0f2fa
commit cfc6c36998
8 changed files with 114 additions and 91 deletions

View File

@ -366,6 +366,7 @@ members = [
"repo_attributes/repo_bookmark_attrs", "repo_attributes/repo_bookmark_attrs",
"repo_attributes/repo_cross_repo", "repo_attributes/repo_cross_repo",
"repo_attributes/repo_derived_data", "repo_attributes/repo_derived_data",
"repo_attributes/repo_derived_data_service",
"repo_attributes/repo_identity", "repo_attributes/repo_identity",
"repo_attributes/repo_lock/repo_lock", "repo_attributes/repo_lock/repo_lock",
"repo_attributes/repo_permission_checker", "repo_attributes/repo_permission_checker",

View File

@ -26,7 +26,6 @@ derived_data_constants = { version = "0.1.0", path = "../constants" }
derived_data_remote = { version = "0.1.0", path = "../remote" } derived_data_remote = { version = "0.1.0", path = "../remote" }
derived_data_service_if = { version = "0.1.0", path = "../remote/if" } derived_data_service_if = { version = "0.1.0", path = "../remote/if" }
ephemeral_blobstore = { version = "0.1.0", path = "../../blobstore/ephemeral_blobstore" } ephemeral_blobstore = { version = "0.1.0", path = "../../blobstore/ephemeral_blobstore" }
facet = { version = "0.1.0", git = "https://github.com/facebookexperimental/rust-shed.git", branch = "main" }
filenodes = { version = "0.1.0", path = "../../filenodes" } filenodes = { version = "0.1.0", path = "../../filenodes" }
futures = { version = "0.3.22", features = ["async-await", "compat"] } futures = { version = "0.3.22", features = ["async-await", "compat"] }
futures_stats = { version = "0.1.0", git = "https://github.com/facebookexperimental/rust-shed.git", branch = "main" } futures_stats = { version = "0.1.0", git = "https://github.com/facebookexperimental/rust-shed.git", branch = "main" }

View File

@ -18,7 +18,4 @@ pub use self::lease::DerivedDataLease;
pub use self::manager::derive::BatchDeriveOptions; pub use self::manager::derive::BatchDeriveOptions;
pub use self::manager::derive::BatchDeriveStats; pub use self::manager::derive::BatchDeriveStats;
pub use self::manager::derive::Rederivation; pub use self::manager::derive::Rederivation;
pub use self::manager::util::derived_data_service::ArcDerivedDataManagerSet;
pub use self::manager::util::derived_data_service::DerivedDataManagerSet;
pub use self::manager::util::derived_data_service::DerivedDataServiceRepo;
pub use self::manager::DerivedDataManager; pub use self::manager::DerivedDataManager;

View File

@ -89,87 +89,3 @@ impl DerivedDataManager {
} }
} }
} }
pub mod derived_data_service {
use std::collections::HashMap;
use std::sync::Arc;
use anyhow::Result;
use bonsai_hg_mapping::BonsaiHgMapping;
use cacheblob::LeaseOps;
use changesets::Changesets;
use derived_data_remote::DerivationClient;
use filenodes::Filenodes;
use metaconfig_types::DerivedDataConfig;
use metaconfig_types::DerivedDataTypesConfig;
use mononoke_types::RepositoryId;
use repo_blobstore::RepoBlobstore;
use scuba_ext::MononokeScubaSampleBuilder;
use slog::Logger;
use super::DerivedDataManager;
#[facet::facet]
pub struct DerivedDataManagerSet {
logger: Logger,
configs: HashMap<String, DerivedDataManager>,
}
impl DerivedDataManagerSet {
pub fn get_mananger(&self, config_name: impl Into<String>) -> Option<&DerivedDataManager> {
self.configs.get(&config_name.into())
}
pub fn logger(&self) -> &Logger {
&self.logger
}
}
#[facet::container]
pub struct DerivedDataServiceRepo {
#[facet]
pub manager_set: DerivedDataManagerSet,
}
impl DerivedDataManagerSet {
pub fn new(
repo_id: RepositoryId,
repo_name: String,
changesets: Arc<dyn Changesets>,
bonsai_hg_mapping: Arc<dyn BonsaiHgMapping>,
filenodes: Arc<dyn Filenodes>,
repo_blobstore: RepoBlobstore,
lease: Arc<dyn LeaseOps>,
logger: Logger,
derived_data_scuba: MononokeScubaSampleBuilder,
config: DerivedDataConfig,
derivation_service_client: Option<Arc<dyn DerivationClient>>,
) -> Result<Self> {
let manager = DerivedDataManager::new(
repo_id,
repo_name,
changesets,
bonsai_hg_mapping,
filenodes,
repo_blobstore,
lease,
derived_data_scuba,
String::default(),
DerivedDataTypesConfig::default(),
derivation_service_client,
);
let configs = config
.available_configs
.into_iter()
.map(|(config_name, config)| {
(
config_name.clone(),
manager.with_replaced_config(config_name, config),
)
})
.collect();
Ok(Self { logger, configs })
}
}
}

View File

@ -0,0 +1,23 @@
# @generated by autocargo
[package]
name = "repo_derived_data_service"
version = "0.1.0"
authors = ["Facebook"]
edition = "2021"
license = "GPLv2+"
[dependencies]
anyhow = "1.0.65"
bonsai_hg_mapping = { version = "0.1.0", path = "../../bonsai_hg_mapping" }
cacheblob = { version = "0.1.0", path = "../../blobstore/cacheblob" }
changesets = { version = "0.1.0", path = "../../changesets" }
derived_data_manager = { version = "0.1.0", path = "../../derived_data/manager" }
derived_data_remote = { version = "0.1.0", path = "../../derived_data/remote" }
facet = { version = "0.1.0", git = "https://github.com/facebookexperimental/rust-shed.git", branch = "main" }
filenodes = { version = "0.1.0", path = "../../filenodes" }
metaconfig_types = { version = "0.1.0", path = "../../metaconfig/types" }
mononoke_types = { version = "0.1.0", path = "../../mononoke_types" }
repo_blobstore = { version = "0.1.0", path = "../../blobrepo/repo_blobstore" }
scuba_ext = { version = "0.1.0", path = "../../common/scuba_ext" }
slog = { version = "2.7", features = ["max_level_trace", "nested-values"] }

View File

@ -0,0 +1,87 @@
/*
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This software may be used and distributed according to the terms of the
* GNU General Public License version 2.
*/
use std::collections::HashMap;
use std::sync::Arc;
use anyhow::Result;
use bonsai_hg_mapping::BonsaiHgMapping;
use cacheblob::LeaseOps;
use changesets::Changesets;
use derived_data_manager::DerivedDataManager;
use derived_data_remote::DerivationClient;
use filenodes::Filenodes;
use metaconfig_types::DerivedDataConfig;
use metaconfig_types::DerivedDataTypesConfig;
use mononoke_types::RepositoryId;
use repo_blobstore::RepoBlobstore;
use scuba_ext::MononokeScubaSampleBuilder;
use slog::Logger;
#[facet::facet]
pub struct DerivedDataManagerSet {
logger: Logger,
configs: HashMap<String, DerivedDataManager>,
}
impl DerivedDataManagerSet {
pub fn get_mananger(&self, config_name: impl Into<String>) -> Option<&DerivedDataManager> {
self.configs.get(&config_name.into())
}
pub fn logger(&self) -> &Logger {
&self.logger
}
}
#[facet::container]
pub struct DerivedDataServiceRepo {
#[facet]
pub manager_set: DerivedDataManagerSet,
}
impl DerivedDataManagerSet {
pub fn new(
repo_id: RepositoryId,
repo_name: String,
changesets: Arc<dyn Changesets>,
bonsai_hg_mapping: Arc<dyn BonsaiHgMapping>,
filenodes: Arc<dyn Filenodes>,
repo_blobstore: RepoBlobstore,
lease: Arc<dyn LeaseOps>,
logger: Logger,
derived_data_scuba: MononokeScubaSampleBuilder,
config: DerivedDataConfig,
derivation_service_client: Option<Arc<dyn DerivationClient>>,
) -> Result<Self> {
let manager = DerivedDataManager::new(
repo_id,
repo_name,
changesets,
bonsai_hg_mapping,
filenodes,
repo_blobstore,
lease,
derived_data_scuba,
String::default(),
DerivedDataTypesConfig::default(),
derivation_service_client,
);
let configs = config
.available_configs
.into_iter()
.map(|(config_name, config)| {
(
config_name.clone(),
manager.with_replaced_config(config_name, config),
)
})
.collect();
Ok(Self { logger, configs })
}
}

View File

@ -27,7 +27,6 @@ cloned = { version = "0.1.0", git = "https://github.com/facebookexperimental/rus
context = { version = "0.1.0", path = "../server/context" } context = { version = "0.1.0", path = "../server/context" }
cross_repo_sync = { version = "0.1.0", path = "../commit_rewriting/cross_repo_sync" } cross_repo_sync = { version = "0.1.0", path = "../commit_rewriting/cross_repo_sync" }
dbbookmarks = { version = "0.1.0", path = "../bookmarks/dbbookmarks" } dbbookmarks = { version = "0.1.0", path = "../bookmarks/dbbookmarks" }
derived_data_manager = { version = "0.1.0", path = "../derived_data/manager" }
derived_data_remote = { version = "0.1.0", path = "../derived_data/remote" } derived_data_remote = { version = "0.1.0", path = "../derived_data/remote" }
environment = { version = "0.1.0", path = "../cmdlib/environment" } environment = { version = "0.1.0", path = "../cmdlib/environment" }
ephemeral_blobstore = { version = "0.1.0", path = "../blobstore/ephemeral_blobstore" } ephemeral_blobstore = { version = "0.1.0", path = "../blobstore/ephemeral_blobstore" }
@ -54,6 +53,7 @@ repo_blobstore = { version = "0.1.0", path = "../blobrepo/repo_blobstore" }
repo_bookmark_attrs = { version = "0.1.0", path = "../repo_attributes/repo_bookmark_attrs" } repo_bookmark_attrs = { version = "0.1.0", path = "../repo_attributes/repo_bookmark_attrs" }
repo_cross_repo = { version = "0.1.0", path = "../repo_attributes/repo_cross_repo" } repo_cross_repo = { version = "0.1.0", path = "../repo_attributes/repo_cross_repo" }
repo_derived_data = { version = "0.1.0", path = "../repo_attributes/repo_derived_data" } repo_derived_data = { version = "0.1.0", path = "../repo_attributes/repo_derived_data" }
repo_derived_data_service = { version = "0.1.0", path = "../repo_attributes/repo_derived_data_service" }
repo_identity = { version = "0.1.0", path = "../repo_attributes/repo_identity" } repo_identity = { version = "0.1.0", path = "../repo_attributes/repo_identity" }
repo_lock = { version = "0.1.0", path = "../repo_attributes/repo_lock/repo_lock" } repo_lock = { version = "0.1.0", path = "../repo_attributes/repo_lock/repo_lock" }
repo_permission_checker = { version = "0.1.0", path = "../repo_attributes/repo_permission_checker" } repo_permission_checker = { version = "0.1.0", path = "../repo_attributes/repo_permission_checker" }

View File

@ -64,8 +64,6 @@ use dbbookmarks::ArcSqlBookmarks;
use dbbookmarks::SqlBookmarksBuilder; use dbbookmarks::SqlBookmarksBuilder;
#[cfg(fbcode_build)] #[cfg(fbcode_build)]
use derived_data_client_library::Client as DerivationServiceClient; use derived_data_client_library::Client as DerivationServiceClient;
use derived_data_manager::ArcDerivedDataManagerSet;
use derived_data_manager::DerivedDataManagerSet;
use derived_data_remote::DerivationClient; use derived_data_remote::DerivationClient;
use derived_data_remote::RemoteDerivationOptions; use derived_data_remote::RemoteDerivationOptions;
use environment::Caching; use environment::Caching;
@ -120,6 +118,8 @@ use repo_cross_repo::ArcRepoCrossRepo;
use repo_cross_repo::RepoCrossRepo; use repo_cross_repo::RepoCrossRepo;
use repo_derived_data::ArcRepoDerivedData; use repo_derived_data::ArcRepoDerivedData;
use repo_derived_data::RepoDerivedData; use repo_derived_data::RepoDerivedData;
use repo_derived_data_service::ArcDerivedDataManagerSet;
use repo_derived_data_service::DerivedDataManagerSet;
use repo_identity::ArcRepoIdentity; use repo_identity::ArcRepoIdentity;
use repo_identity::RepoIdentity; use repo_identity::RepoIdentity;
use repo_lock::AlwaysLockedRepoLock; use repo_lock::AlwaysLockedRepoLock;