mononoke/warm_bookmarks_cache: use the repo's configuration

Summary:
This update the warm_bookmarks_cache's constructor to use the passed in
blobrepo's derived data configuration (instead of whatever the caller is
passing in), since we now have that information.

Reviewed By: HarveyHunt

Differential Revision: D19949725

fbshipit-source-id: 575a1b9ff48f06003dbf9e0230b7cca723ad68f5
This commit is contained in:
Thomas Orozco 2020-02-18 07:38:21 -08:00 committed by Facebook Github Bot
parent 69089c1c57
commit b451a97878
3 changed files with 32 additions and 41 deletions

View File

@ -38,7 +38,7 @@ use repo_client::gettreepack_entries;
use slog::{debug, Logger};
use sql_ext::MysqlOptions;
use time_ext::DurationExt;
use unodes::{derive_unodes, RootUnodeManifestId};
use unodes::RootUnodeManifestId;
use mercurial_types::{
blobs::{HgBlobChangeset, HgBlobEntry},
@ -55,7 +55,7 @@ use types::{
api::{DataRequest, DataResponse, HistoryRequest, HistoryResponse, TreeRequest},
DataEntry, Key, RepoPathBuf, WireHistoryEntry,
};
use warm_bookmarks_cache::{warm_hg_changeset, WarmBookmarksCache};
use warm_bookmarks_cache::WarmBookmarksCache;
use mononoke_types::{ChangesetId, FileUnodeId, MPath, ManifestUnodeId};
use reachabilityindex::ReachabilityIndex;
@ -159,11 +159,7 @@ impl MononokeRepo {
config.derived_data_config,
))
.map(move |(synced_commit_mapping, repo)| {
let warm_bookmarks_cache = WarmBookmarksCache::new(
ctx.clone(),
repo.clone(),
vec![Box::new(&warm_hg_changeset), Box::new(&derive_unodes)],
);
let warm_bookmarks_cache = WarmBookmarksCache::new(ctx.clone(), repo.clone());
let skiplist_index = {
if !with_skiplist {

View File

@ -12,10 +12,13 @@ use std::sync::{Arc, RwLock};
use std::time::{Duration, Instant};
use anyhow::Error;
use blame::{derive_blame, BlameRoot};
use blobrepo::BlobRepo;
use bookmarks::BookmarkName;
use cloned::cloned;
use context::CoreContext;
use derived_data::BonsaiDerived;
use fsnodes::{derive_fsnodes, RootFsnodeId};
use futures::{future, stream, sync, Future, Stream};
use futures_ext::{spawn_future, BoxFuture, FutureExt, StreamExt};
use futures_stats::Timed;
@ -24,6 +27,7 @@ use mononoke_types::ChangesetId;
use slog::info;
use stats::prelude::*;
use time_ext::DurationExt;
use unodes::{derive_unodes, RootUnodeManifestId};
define_stats! {
prefix = "mononoke.bookmarks.warm_bookmarks_cache";
@ -39,11 +43,26 @@ pub type WarmerFn =
dyn Fn(CoreContext, BlobRepo, ChangesetId) -> BoxFuture<(), Error> + Send + Sync + 'static;
impl WarmBookmarksCache {
pub fn new(
ctx: CoreContext,
repo: BlobRepo,
warmers: Vec<Box<WarmerFn>>,
) -> impl Future<Item = Self, Error = Error> {
pub fn new(ctx: CoreContext, repo: BlobRepo) -> impl Future<Item = Self, Error = Error> {
let derived_data_types = &repo.get_derived_data_config().derived_data_types;
let mut warmers: Vec<Box<WarmerFn>> = Vec::new();
info!(ctx.logger(), "Warming hg changesets");
warmers.push(Box::new(&warm_hg_changeset));
if derived_data_types.contains(RootUnodeManifestId::NAME) {
info!(ctx.logger(), "Warming {}", RootUnodeManifestId::NAME);
warmers.push(Box::new(&derive_unodes));
}
if derived_data_types.contains(RootFsnodeId::NAME) {
info!(ctx.logger(), "Warming {}", RootFsnodeId::NAME);
warmers.push(Box::new(&derive_fsnodes));
}
if derived_data_types.contains(BlameRoot::NAME) {
info!(ctx.logger(), "Warming {}", BlameRoot::NAME);
warmers.push(Box::new(&derive_blame));
}
let warmers = Arc::new(warmers);
let bookmarks = Arc::new(RwLock::new(HashMap::new()));
let (sender, receiver) = sync::oneshot::channel();

View File

@ -13,7 +13,6 @@ use std::{
use aclchecker::AclChecker;
use anyhow::{bail, format_err, Error};
use blame::{derive_blame, BlameRoot};
use blobrepo::BlobRepo;
use blobrepo_factory::{open_blobrepo, BlobstoreOptions, Caching, ReadOnlyStorage};
use blobstore::Loadable;
@ -21,10 +20,8 @@ use blobstore_factory::make_sql_factory;
use bookmarks::{BookmarkName, BookmarkPrefix};
use context::CoreContext;
use cross_repo_sync::{CommitSyncRepos, CommitSyncer};
use derived_data::BonsaiDerived;
use fbinit::FacebookInit;
use filestore::{Alias, FetchKey};
use fsnodes::{derive_fsnodes, RootFsnodeId};
use futures::stream::{self, Stream};
use futures_ext::StreamExt;
use futures_preview::compat::{Future01CompatExt, Stream01CompatExt};
@ -48,8 +45,7 @@ use sql_ext::MysqlOptions;
use sql_ext::SqlConstructors;
use stats_facebook::service_data::{get_service_data_singleton, ServiceData};
use synced_commit_mapping::{SqlSyncedCommitMapping, SyncedCommitMapping};
use unodes::{derive_unodes, RootUnodeManifestId};
use warm_bookmarks_cache::{warm_hg_changeset, WarmBookmarksCache, WarmerFn};
use warm_bookmarks_cache::WarmBookmarksCache;
use crate::changeset::ChangesetContext;
use crate::errors::MononokeError;
@ -185,20 +181,8 @@ impl Repo {
)
.compat();
let derived_data_types = &blob_repo.get_derived_data_config().derived_data_types;
let mut derivers: Vec<Box<WarmerFn>> = Vec::new();
derivers.push(Box::new(&warm_hg_changeset));
if derived_data_types.contains(RootUnodeManifestId::NAME) {
derivers.push(Box::new(&derive_unodes));
}
if derived_data_types.contains(RootFsnodeId::NAME) {
derivers.push(Box::new(&derive_fsnodes));
}
if derived_data_types.contains(BlameRoot::NAME) {
derivers.push(Box::new(&derive_blame));
}
let warm_bookmarks_cache = Arc::new(
WarmBookmarksCache::new(ctx.clone(), blob_repo.clone(), derivers)
WarmBookmarksCache::new(ctx.clone(), blob_repo.clone())
.compat()
.await?,
);
@ -281,17 +265,9 @@ impl Repo {
synced_commit_mapping: Arc<dyn SyncedCommitMapping>,
) -> Result<Self, Error> {
let warm_bookmarks_cache = Arc::new(
WarmBookmarksCache::new(
ctx.clone(),
blob_repo.clone(),
vec![
Box::new(&warm_hg_changeset),
Box::new(&derive_unodes),
Box::new(&derive_blame),
],
)
.compat()
.await?,
WarmBookmarksCache::new(ctx.clone(), blob_repo.clone())
.compat()
.await?,
);
Ok(Self {
name: String::from("test"),