mirror of
https://github.com/facebook/sapling.git
synced 2024-10-08 07:49:11 +03:00
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:
parent
69089c1c57
commit
b451a97878
@ -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 {
|
||||
|
@ -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();
|
||||
|
@ -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"),
|
||||
|
Loading…
Reference in New Issue
Block a user