mirror of
https://github.com/facebook/sapling.git
synced 2024-10-10 08:47:12 +03:00
mononoke: move enum ScrubAction to multiplexedblob
Summary: This doesn't need to be in metaconfig anymore, can move it to multiplexedblob Reviewed By: krallin Differential Revision: D25928061 fbshipit-source-id: 8aa6ce6aafa16f84730cf388ebf7eab6d5bf2c53
This commit is contained in:
parent
7770133dbe
commit
5285dd1b3c
@ -21,10 +21,10 @@ use futures::{
|
||||
};
|
||||
use logblob::LogBlob;
|
||||
use metaconfig_types::{
|
||||
BlobConfig, BlobstoreId, DatabaseConfig, MultiplexId, MultiplexedStoreType, ScrubAction,
|
||||
BlobConfig, BlobstoreId, DatabaseConfig, MultiplexId, MultiplexedStoreType,
|
||||
ShardableRemoteDatabaseConfig,
|
||||
};
|
||||
use multiplexedblob::{MultiplexedBlobstore, ScrubBlobstore, ScrubOptions};
|
||||
use multiplexedblob::{MultiplexedBlobstore, ScrubAction, ScrubBlobstore, ScrubOptions};
|
||||
use packblob::{PackBlob, PackOptions};
|
||||
use readonlyblob::ReadOnlyBlobstore;
|
||||
use scuba_ext::MononokeScubaSampleBuilder;
|
||||
|
@ -15,6 +15,7 @@ mod sql;
|
||||
pub use ::blobstore::{PutBehaviour, DEFAULT_PUT_BEHAVIOUR};
|
||||
pub use cacheblob::CachelibBlobstoreOptions;
|
||||
pub use chaosblob::ChaosOptions;
|
||||
pub use multiplexedblob::ScrubAction;
|
||||
pub use packblob::PackOptions;
|
||||
pub use throttledblob::ThrottleOptions;
|
||||
|
||||
|
@ -12,7 +12,9 @@ pub mod queue;
|
||||
pub mod scrub;
|
||||
|
||||
pub use crate::queue::MultiplexedBlobstore;
|
||||
pub use crate::scrub::{LoggingScrubHandler, ScrubBlobstore, ScrubHandler, ScrubOptions};
|
||||
pub use crate::scrub::{
|
||||
LoggingScrubHandler, ScrubAction, ScrubBlobstore, ScrubHandler, ScrubOptions,
|
||||
};
|
||||
|
||||
#[cfg(test)]
|
||||
mod test;
|
||||
|
@ -10,7 +10,7 @@ use crate::{
|
||||
queue::MultiplexedBlobstore,
|
||||
};
|
||||
|
||||
use anyhow::Result;
|
||||
use anyhow::{anyhow, Error, Result};
|
||||
use async_trait::async_trait;
|
||||
use blobstore::{
|
||||
Blobstore, BlobstoreGetData, BlobstoreMetadata, BlobstorePutOps, OverwriteStatus, PutBehaviour,
|
||||
@ -19,7 +19,7 @@ use blobstore_sync_queue::BlobstoreSyncQueue;
|
||||
use chrono::Duration as ChronoDuration;
|
||||
use context::CoreContext;
|
||||
use futures::stream::{FuturesUnordered, TryStreamExt};
|
||||
use metaconfig_types::{BlobstoreId, MultiplexId, ScrubAction};
|
||||
use metaconfig_types::{BlobstoreId, MultiplexId};
|
||||
use mononoke_types::{BlobstoreBytes, DateTime};
|
||||
use once_cell::sync::OnceCell;
|
||||
use scuba_ext::MononokeScubaSampleBuilder;
|
||||
@ -27,11 +27,33 @@ use slog::{info, warn};
|
||||
use std::collections::HashMap;
|
||||
use std::fmt;
|
||||
use std::num::{NonZeroU64, NonZeroUsize};
|
||||
use std::str::FromStr;
|
||||
use std::sync::{atomic::AtomicUsize, Arc};
|
||||
|
||||
static DEFAULT_HEAL_MAX_BACKLOG_DAYS: i64 = 7;
|
||||
static HEAL_MAX_BACKLOG: OnceCell<ChronoDuration> = OnceCell::new();
|
||||
|
||||
/// What to do when the ScrubBlobstore finds a problem
|
||||
#[derive(Debug, Clone, Copy, Eq, PartialEq, Hash)]
|
||||
pub enum ScrubAction {
|
||||
/// Log items needing repair
|
||||
ReportOnly,
|
||||
/// Do repairs
|
||||
Repair,
|
||||
}
|
||||
|
||||
impl FromStr for ScrubAction {
|
||||
type Err = Error;
|
||||
|
||||
fn from_str(string: &str) -> Result<Self, Self::Err> {
|
||||
match string {
|
||||
"ReportOnly" => Ok(ScrubAction::ReportOnly),
|
||||
"Repair" => Ok(ScrubAction::Repair),
|
||||
_ => Err(anyhow!("Unable to parse {} as {}", string, "ScrubAction")),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
pub struct ScrubOptions {
|
||||
pub scrub_action: ScrubAction,
|
||||
|
@ -15,7 +15,7 @@ use std::{
|
||||
|
||||
use crate::base::{MultiplexedBlobstoreBase, MultiplexedBlobstorePutHandler};
|
||||
use crate::queue::MultiplexedBlobstore;
|
||||
use crate::scrub::{LoggingScrubHandler, ScrubBlobstore, ScrubHandler, ScrubOptions};
|
||||
use crate::scrub::{LoggingScrubHandler, ScrubAction, ScrubBlobstore, ScrubHandler, ScrubOptions};
|
||||
use anyhow::{bail, Result};
|
||||
use async_trait::async_trait;
|
||||
use blobstore::{Blobstore, BlobstoreGetData, BlobstorePutOps, OverwriteStatus, PutBehaviour};
|
||||
@ -34,7 +34,7 @@ use futures::{
|
||||
};
|
||||
use lock_ext::LockExt;
|
||||
use memblob::Memblob;
|
||||
use metaconfig_types::{BlobstoreId, MultiplexId, ScrubAction};
|
||||
use metaconfig_types::{BlobstoreId, MultiplexId};
|
||||
use mononoke_types::{BlobstoreBytes, DateTime};
|
||||
use nonzero_ext::nonzero;
|
||||
use readonlyblob::ReadOnlyBlobstore;
|
||||
|
@ -15,14 +15,14 @@ use fbinit::FacebookInit;
|
||||
use futures::{compat::Future01CompatExt, future::try_join};
|
||||
|
||||
use blobstore::{Blobstore, BlobstoreGetData};
|
||||
use blobstore_factory::{make_blobstore, BlobstoreOptions, ReadOnlyStorage};
|
||||
use blobstore_factory::{make_blobstore, BlobstoreOptions, ReadOnlyStorage, ScrubAction};
|
||||
use cacheblob::{new_memcache_blobstore, CacheBlobstoreExt};
|
||||
use cached_config::ConfigStore;
|
||||
use cmdlib::args::{self, MononokeMatches};
|
||||
use context::CoreContext;
|
||||
use git_types::Tree as GitTree;
|
||||
use mercurial_types::{HgChangesetEnvelope, HgFileEnvelope, HgManifestEnvelope};
|
||||
use metaconfig_types::{BlobConfig, BlobstoreId, Redaction, ScrubAction, StorageConfig};
|
||||
use metaconfig_types::{BlobConfig, BlobstoreId, Redaction, StorageConfig};
|
||||
use mononoke_types::{FileContents, RepositoryId};
|
||||
use prefixblob::PrefixBlobstore;
|
||||
use redactedblobstore::{
|
||||
|
@ -18,10 +18,9 @@ use tokio::{
|
||||
io::{stdin, AsyncBufReadExt, AsyncWriteExt, BufReader},
|
||||
};
|
||||
|
||||
use blobstore_factory::make_blobstore;
|
||||
use blobstore_factory::{make_blobstore, ScrubAction};
|
||||
use cmdlib::args;
|
||||
use context::CoreContext;
|
||||
use metaconfig_types::ScrubAction;
|
||||
|
||||
mod scrub;
|
||||
|
||||
|
@ -726,27 +726,6 @@ pub struct StorageConfig {
|
||||
pub metadata: MetadataDatabaseConfig,
|
||||
}
|
||||
|
||||
/// What to do when the ScrubBlobstore finds a problem
|
||||
#[derive(Debug, Clone, Copy, Eq, PartialEq, Deserialize, Hash)]
|
||||
pub enum ScrubAction {
|
||||
/// Log items needing repair
|
||||
ReportOnly,
|
||||
/// Do repairs
|
||||
Repair,
|
||||
}
|
||||
|
||||
impl FromStr for ScrubAction {
|
||||
type Err = Error;
|
||||
|
||||
fn from_str(string: &str) -> Result<Self, Self::Err> {
|
||||
match string {
|
||||
"ReportOnly" => Ok(ScrubAction::ReportOnly),
|
||||
"Repair" => Ok(ScrubAction::Repair),
|
||||
_ => Err(anyhow!("Unable to parse {} as {}", string, "ScrubAction")),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Whether we should read from this blobstore normally in a Multiplex,
|
||||
/// or only read from it in Scrub or when it's our last chance to find the blob
|
||||
#[derive(Debug, Clone, Copy, Eq, PartialEq, Deserialize, Hash)]
|
||||
|
@ -20,7 +20,9 @@ use crate::walk::{OutgoingEdge, RepoWalkParams};
|
||||
use ::blobstore::Blobstore;
|
||||
use anyhow::{format_err, Context, Error};
|
||||
use blobrepo_factory::{open_blobrepo_given_datasources, Caching, ReadOnlyStorage};
|
||||
use blobstore_factory::{make_metadata_sql_factory, CachelibBlobstoreOptions, MetadataSqlFactory};
|
||||
use blobstore_factory::{
|
||||
make_metadata_sql_factory, CachelibBlobstoreOptions, MetadataSqlFactory, ScrubAction,
|
||||
};
|
||||
use bookmarks::BookmarkName;
|
||||
use clap::{App, Arg, ArgMatches, SubCommand, Values};
|
||||
use cmdlib::args::{
|
||||
@ -33,9 +35,7 @@ use futures::compat::Future01CompatExt;
|
||||
use itertools::{process_results, Itertools};
|
||||
use maplit::hashset;
|
||||
use mercurial_derived_data::MappedHgChangesetId;
|
||||
use metaconfig_types::{
|
||||
BlobConfig, CensoredScubaParams, MetadataDatabaseConfig, Redaction, ScrubAction,
|
||||
};
|
||||
use metaconfig_types::{BlobConfig, CensoredScubaParams, MetadataDatabaseConfig, Redaction};
|
||||
use multiplexedblob::{ScrubHandler, ScrubOptions};
|
||||
use once_cell::sync::Lazy;
|
||||
use samplingblob::SamplingHandler;
|
||||
|
Loading…
Reference in New Issue
Block a user